- DIFROMSI ;SCISC/DCL-EDE IN ;3:19 PM 16 Nov 2001 [ 04/02/2003 8:25 AM ]
- ;;22.0;VA FileMan;**1001**;APR 1, 2003
- ;;22.0;VA FileMan;**94**;Mar 30, 1999
- ;Per VHA Directive 10-93-142, this routine should not be modified.
- FPRE(DIFRFILE,DIFRFLG,DIFRNAME,DIFRSA) ;
- G FPRE^DIFROMSC
- EPRE(DIFRFILE,DIFRIEN,DIFRFLG,DIFRNAME,DIFRSA,DIFROIEN) ;
- I '$D(DIQUIET) N DIQUIET S DIQUIET=1
- I '$D(DIFM) N DIFM S DIFM=1
- I $G(U)'="^"!($G(DT)'>0)!($G(DTIME)'>0)!('$D(DUZ)) D DT^DICRW
- N DIOVRD S DIOVRD=1
- N DIFRRDA,DIFRX
- S DIFRFILE=$G(DIFRFILE) S:DIFRFILE'>0 DIFRFILE=$G(XPDFIL)
- I DIFRFILE'>0 D BLD^DIALOG(9521) Q
- S DIFRIEN=$G(DIFRIEN) S:DIFRIEN'>0 DIFRIEN=$G(DA)
- I DIFRIEN'>0 D BLD^DIALOG(9522) Q
- S DIFROIEN=$G(DIFROIEN) S:DIFROIEN'>0 DIFROIEN=$G(OLDA)
- I DIFROIEN'>0 D BLD^DIALOG(9523) Q
- I $G(DIFRNAME)="" D BLD^DIALOG(9524) Q
- I $G(DIFRSA)="" S DIFRSA=$NA(^XTMP("XPDI",DIFRNAME,"KRN"))
- S DIFRRDA=$$CREF^DIQGU($$ROOT^DIQGU(DIFRFILE)_DIFRIEN)
- S DIFRX=$P(@DIFRRDA@(0),"^")
- G:DIFRFILE=.84 DIALOG
- ;
- ; preserve security codes if template/form is not new
- I $G(DIFRFLG)'["N",DIFRFILE'=.5 D
- .N X,Y
- .S Y=@DIFRRDA@(0)
- .S X=@DIFRSA@(DIFRFILE,DIFROIEN,0),$P(X,U,3)=$P(Y,U,3),$P(X,U,6)=$P(Y,U,6),^(0)=X
- .Q
- ;
- I DIFRFILE'=.403 K @DIFRRDA
- E D
- .Q:$G(DIFRFLG)["N"
- .N DA,DIC,DIK,DINUM,X,Y,DO
- .S DIK="^DIST(.403,",DA=DIFRIEN
- .D ^DIK
- .S DIC="^DIST(.403,",DIC(0)="LX",X=DIFRX,DINUM=DIFRIEN
- .D FILE^DICN
- .Q
- I DIFRFILE=.403 D
- .N DIFRA0,DIFRA1,DIFRA2,DIFRJ,DIFRL,DIFRP,DIFRX,DIFRY
- .S DIFRJ=0
- .F S DIFRJ=$O(@DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ)) Q:'DIFRJ I $D(^(DIFRJ,0)) S DIFRP=$P(^(0),"^",2) D
- ..S:DIFRP]"" DIFRP=$O(^DIST(.404,"B",DIFRP,0))
- ..S:DIFRP $P(@DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,0),"^",2)=DIFRP
- ..S DIFRL=0
- ..F S DIFRL=$O(@DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,40,DIFRL)) Q:'DIFRL S DIFRA0=$G(^(DIFRL,0)),DIFRP=$P(DIFRA0,"^") I DIFRP]"" D
- ...S DIFRP=$O(^DIST(.404,"B",DIFRP,0)) I DIFRP D
- ....S $P(DIFRA0,"^")=DIFRP,@DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,"BLK",DIFRP,0)=DIFRA0
- ....N DIFRX
- ....S DIFRX=0
- ....F S DIFRX=$O(@DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,40,DIFRL,DIFRX)) Q:DIFRX="" S @DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,"BLK",DIFRP,DIFRX)=^(DIFRX)
- ....Q
- ...Q
- ..S DIFRA0=$G(@DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,40,0))
- ..Q:DIFRA0=""
- ..K @DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,40)
- ..S (DIFRA1,DIFRA2)=0
- ..S DIFRL=0
- ..F S DIFRL=$O(@DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,"BLK",DIFRL)) Q:'DIFRL S @DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,40,DIFRL,0)=^(DIFRL,0),DIFRA1=DIFRL,DIFRA2=DIFRA2+1 D
- ...N DIFRX
- ...S DIFRX=0
- ...F S DIFRX=$O(@DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,"BLK",DIFRL,DIFRX)) Q:DIFRX="" S @DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,40,DIFRL,DIFRX)=^(DIFRX)
- ...Q
- ..S $P(DIFRA0,"^",3,4)=DIFRA1_"^"_DIFRA2
- ..S @DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,40,0)=DIFRA0
- ..K @DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,"BLK")
- ..Q
- .Q
- Q
- DIALOG N DIFRF,DIFRX
- S DIFRF=$P(@DIFRSA@(DIFRFILE,DIFROIEN,0),"^",4)
- I DIFRF]"" D
- .S DIFRF=$O(^DIC(9.4,"B",DIFRF,0)) I DIFRF,$O(^(DIFRF)) D S DIFRF=""
- ..N DIFRERR S DIFRERR(1)=DIFRF,DIFRERR(2)=DIFRIEN
- ..D BLD^DIALOG(9525,.DIFRERR)
- ..Q
- .S $P(@DIFRSA@(DIFRFILE,DIFROIEN,0),"^",4)=DIFRF
- F DIFRX=1,2,3,5,6 K @DIFRRDA@(DIFRX)
- Q
- EPOST(DIFRFILE,DIFRIEN,DIFRFLG,DIFRNAME,DIFRSA) ;
- I '$D(DIQUIET) N DIQUIET S DIQUIET=1
- I '$D(DIFM) N DIFM S DIFM=1
- I $G(U)'="^"!($G(DT)'>0)!($G(DTIME)'>0)!('$D(DUZ)) D DT^DICRW
- N DIOVRD S DIOVRD=1
- I '$G(DIFRFILE)!('$G(DIFRIEN)) Q
- I $G(DIFRNAME)="" Q
- S:$G(DIFRSA)']"" DIFRSA=$NA(^XTMP("XPDI",DIFRNAME))
- N DA,DIFR,DIFR3,DIFROU,DIK,DMAX,DNM,X,Y,Z,DIFRTN
- S DIK=$$ROOT^DILFD(DIFRFILE),DA=DIFRIEN
- D IX1^DIK
- I DIFRFILE=.403,DIFRIEN D ENGRP^DDSZ(DIFRIEN) Q
- S DIFR=$S(DIFRFILE=.4:"DIPT",DIFRFILE=.402:"DIE",1:"")
- Q:DIFR=""
- I ^DD("VERSION")>17.4,'$D(DISYS) D OS^DII
- E S DISYS=^DD("OS")
- I '$D(^DD("OS",DISYS,"ZS")) D BLD^DIALOG(9526) Q
- S Y=DIFRIEN
- I $D(@("^"_DIFR_"(Y,""ROU"")")) K ^("ROU") I $D(^("ROUOLD")) S (DIFROU,X)=^("ROUOLD"),DIFRTN=$P(^(0),"^") D:X]""
- .N %X,DIR,DMAX,X,Y,DIFRZTA
- .S DIFR3="DI"_$E(DIFR,3)_"Z"
- .I $$VAL^DIFROMSS(DIFRFILE,DIFRIEN) D Q
- ..D @("EN2^"_DIFR3_"(DIFRIEN,"""",DIFROU,"""",""DIFRZTA"")")
- ..I $D(DIFRZTA) M @DIFRSA@(DIFR3,DIFRIEN)=DIFRZTA
- ..S @DIFRSA@(DIFR3,DIFRIEN)=DIFROU
- ..Q
- .N DIFRTT,DIFRERR S DIFRTT=$S(DIFRFILE=.4:"PRINT",1:"INPUT")
- .S DIFRERR(1)=DIFRTT,DIFRERR(2)=DIFRTN
- .D BLD^DIALOG(9528,.DIFRERR)
- .Q
- Q
- FPOST ;
- G FPOST^DIFROMSC
- EXIT I $G(DIFRMSGR)]"" D CALLOUT^DIEFU(DIFRMSGR)
- Q
- DIFROMSI ;SCISC/DCL-EDE IN ;3:19 PM 16 Nov 2001 [ 04/02/2003 8:25 AM ]
- +1 ;;22.0;VA FileMan;**1001**;APR 1, 2003
- +2 ;;22.0;VA FileMan;**94**;Mar 30, 1999
- +3 ;Per VHA Directive 10-93-142, this routine should not be modified.
- FPRE(DIFRFILE,DIFRFLG,DIFRNAME,DIFRSA) ;
- +1 GOTO FPRE^DIFROMSC
- EPRE(DIFRFILE,DIFRIEN,DIFRFLG,DIFRNAME,DIFRSA,DIFROIEN) ;
- +1 IF '$DATA(DIQUIET)
- NEW DIQUIET
- SET DIQUIET=1
- +2 IF '$DATA(DIFM)
- NEW DIFM
- SET DIFM=1
- +3 IF $GET(U)'="^"!($GET(DT)'>0)!($GET(DTIME)'>0)!('$DATA(DUZ))
- DO DT^DICRW
- +4 NEW DIOVRD
- SET DIOVRD=1
- +5 NEW DIFRRDA,DIFRX
- +6 SET DIFRFILE=$GET(DIFRFILE)
- IF DIFRFILE'>0
- SET DIFRFILE=$GET(XPDFIL)
- +7 IF DIFRFILE'>0
- DO BLD^DIALOG(9521)
- QUIT
- +8 SET DIFRIEN=$GET(DIFRIEN)
- IF DIFRIEN'>0
- SET DIFRIEN=$GET(DA)
- +9 IF DIFRIEN'>0
- DO BLD^DIALOG(9522)
- QUIT
- +10 SET DIFROIEN=$GET(DIFROIEN)
- IF DIFROIEN'>0
- SET DIFROIEN=$GET(OLDA)
- +11 IF DIFROIEN'>0
- DO BLD^DIALOG(9523)
- QUIT
- +12 IF $GET(DIFRNAME)=""
- DO BLD^DIALOG(9524)
- QUIT
- +13 IF $GET(DIFRSA)=""
- SET DIFRSA=$NAME(^XTMP("XPDI",DIFRNAME,"KRN"))
- +14 SET DIFRRDA=$$CREF^DIQGU($$ROOT^DIQGU(DIFRFILE)_DIFRIEN)
- +15 SET DIFRX=$PIECE(@DIFRRDA@(0),"^")
- +16 IF DIFRFILE=.84
- GOTO DIALOG
- +17 ;
- +18 ; preserve security codes if template/form is not new
- +19 IF $GET(DIFRFLG)'["N"
- IF DIFRFILE'=.5
- Begin DoDot:1
- +20 NEW X,Y
- +21 SET Y=@DIFRRDA@(0)
- +22 SET X=@DIFRSA@(DIFRFILE,DIFROIEN,0)
- SET $PIECE(X,U,3)=$PIECE(Y,U,3)
- SET $PIECE(X,U,6)=$PIECE(Y,U,6)
- SET ^(0)=X
- +23 QUIT
- End DoDot:1
- +24 ;
- +25 IF DIFRFILE'=.403
- KILL @DIFRRDA
- +26 IF '$TEST
- Begin DoDot:1
- +27 IF $GET(DIFRFLG)["N"
- QUIT
- +28 NEW DA,DIC,DIK,DINUM,X,Y,DO
- +29 SET DIK="^DIST(.403,"
- SET DA=DIFRIEN
- +30 DO ^DIK
- +31 SET DIC="^DIST(.403,"
- SET DIC(0)="LX"
- SET X=DIFRX
- SET DINUM=DIFRIEN
- +32 DO FILE^DICN
- +33 QUIT
- End DoDot:1
- +34 IF DIFRFILE=.403
- Begin DoDot:1
- +35 NEW DIFRA0,DIFRA1,DIFRA2,DIFRJ,DIFRL,DIFRP,DIFRX,DIFRY
- +36 SET DIFRJ=0
- +37 FOR
- SET DIFRJ=$ORDER(@DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ))
- IF 'DIFRJ
- QUIT
- IF $DATA(^(DIFRJ,0))
- SET DIFRP=$PIECE(^(0),"^",2)
- Begin DoDot:2
- +38 IF DIFRP]""
- SET DIFRP=$ORDER(^DIST(.404,"B",DIFRP,0))
- +39 IF DIFRP
- SET $PIECE(@DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,0),"^",2)=DIFRP
- +40 SET DIFRL=0
- +41 FOR
- SET DIFRL=$ORDER(@DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,40,DIFRL))
- IF 'DIFRL
- QUIT
- SET DIFRA0=$GET(^(DIFRL,0))
- SET DIFRP=$PIECE(DIFRA0,"^")
- IF DIFRP]""
- Begin DoDot:3
- +42 SET DIFRP=$ORDER(^DIST(.404,"B",DIFRP,0))
- IF DIFRP
- Begin DoDot:4
- +43 SET $PIECE(DIFRA0,"^")=DIFRP
- SET @DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,"BLK",DIFRP,0)=DIFRA0
- +44 NEW DIFRX
- +45 SET DIFRX=0
- +46 FOR
- SET DIFRX=$ORDER(@DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,40,DIFRL,DIFRX))
- IF DIFRX=""
- QUIT
- SET @DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,"BLK",DIFRP,DIFRX)=^(DIFRX)
- +47 QUIT
- End DoDot:4
- +48 QUIT
- End DoDot:3
- +49 SET DIFRA0=$GET(@DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,40,0))
- +50 IF DIFRA0=""
- QUIT
- +51 KILL @DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,40)
- +52 SET (DIFRA1,DIFRA2)=0
- +53 SET DIFRL=0
- +54 FOR
- SET DIFRL=$ORDER(@DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,"BLK",DIFRL))
- IF 'DIFRL
- QUIT
- SET @DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,40,DIFRL,0)=^(DIFRL,0)
- SET DIFRA1=DIFRL
- SET DIFRA2=DIFRA2+1
- Begin DoDot:3
- +55 NEW DIFRX
- +56 SET DIFRX=0
- +57 FOR
- SET DIFRX=$ORDER(@DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,"BLK",DIFRL,DIFRX))
- IF DIFRX=""
- QUIT
- SET @DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,40,DIFRL,DIFRX)=^(DIFRX)
- +58 QUIT
- End DoDot:3
- +59 SET $PIECE(DIFRA0,"^",3,4)=DIFRA1_"^"_DIFRA2
- +60 SET @DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,40,0)=DIFRA0
- +61 KILL @DIFRSA@(DIFRFILE,DIFROIEN,40,DIFRJ,"BLK")
- +62 QUIT
- End DoDot:2
- +63 QUIT
- End DoDot:1
- +64 QUIT
- DIALOG NEW DIFRF,DIFRX
- +1 SET DIFRF=$PIECE(@DIFRSA@(DIFRFILE,DIFROIEN,0),"^",4)
- +2 IF DIFRF]""
- Begin DoDot:1
- +3 SET DIFRF=$ORDER(^DIC(9.4,"B",DIFRF,0))
- IF DIFRF
- IF $ORDER(^(DIFRF))
- Begin DoDot:2
- +4 NEW DIFRERR
- SET DIFRERR(1)=DIFRF
- SET DIFRERR(2)=DIFRIEN
- +5 DO BLD^DIALOG(9525,.DIFRERR)
- +6 QUIT
- End DoDot:2
- SET DIFRF=""
- +7 SET $PIECE(@DIFRSA@(DIFRFILE,DIFROIEN,0),"^",4)=DIFRF
- End DoDot:1
- +8 FOR DIFRX=1,2,3,5,6
- KILL @DIFRRDA@(DIFRX)
- +9 QUIT
- EPOST(DIFRFILE,DIFRIEN,DIFRFLG,DIFRNAME,DIFRSA) ;
- +1 IF '$DATA(DIQUIET)
- NEW DIQUIET
- SET DIQUIET=1
- +2 IF '$DATA(DIFM)
- NEW DIFM
- SET DIFM=1
- +3 IF $GET(U)'="^"!($GET(DT)'>0)!($GET(DTIME)'>0)!('$DATA(DUZ))
- DO DT^DICRW
- +4 NEW DIOVRD
- SET DIOVRD=1
- +5 IF '$GET(DIFRFILE)!('$GET(DIFRIEN))
- QUIT
- +6 IF $GET(DIFRNAME)=""
- QUIT
- +7 IF $GET(DIFRSA)']""
- SET DIFRSA=$NAME(^XTMP("XPDI",DIFRNAME))
- +8 NEW DA,DIFR,DIFR3,DIFROU,DIK,DMAX,DNM,X,Y,Z,DIFRTN
- +9 SET DIK=$$ROOT^DILFD(DIFRFILE)
- SET DA=DIFRIEN
- +10 DO IX1^DIK
- +11 IF DIFRFILE=.403
- IF DIFRIEN
- DO ENGRP^DDSZ(DIFRIEN)
- QUIT
- +12 SET DIFR=$SELECT(DIFRFILE=.4:"DIPT",DIFRFILE=.402:"DIE",1:"")
- +13 IF DIFR=""
- QUIT
- +14 IF ^DD("VERSION")>17.4
- IF '$DATA(DISYS)
- DO OS^DII
- +15 IF '$TEST
- SET DISYS=^DD("OS")
- +16 IF '$DATA(^DD("OS",DISYS,"ZS"))
- DO BLD^DIALOG(9526)
- QUIT
- +17 SET Y=DIFRIEN
- +18 IF $DATA(@("^"_DIFR_"(Y,""ROU"")"))
- KILL ^("ROU")
- IF $DATA(^("ROUOLD"))
- SET (DIFROU,X)=^("ROUOLD")
- SET DIFRTN=$PIECE(^(0),"^")
- IF X]""
- Begin DoDot:1
- +19 NEW %X,DIR,DMAX,X,Y,DIFRZTA
- +20 SET DIFR3="DI"_$EXTRACT(DIFR,3)_"Z"
- +21 IF $$VAL^DIFROMSS(DIFRFILE,DIFRIEN)
- Begin DoDot:2
- +22 DO @("EN2^"_DIFR3_"(DIFRIEN,"""",DIFROU,"""",""DIFRZTA"")")
- +23 IF $DATA(DIFRZTA)
- MERGE @DIFRSA@(DIFR3,DIFRIEN)=DIFRZTA
- +24 SET @DIFRSA@(DIFR3,DIFRIEN)=DIFROU
- +25 QUIT
- End DoDot:2
- QUIT
- +26 NEW DIFRTT,DIFRERR
- SET DIFRTT=$SELECT(DIFRFILE=.4:"PRINT",1:"INPUT")
- +27 SET DIFRERR(1)=DIFRTT
- SET DIFRERR(2)=DIFRTN
- +28 DO BLD^DIALOG(9528,.DIFRERR)
- +29 QUIT
- End DoDot:1
- +30 QUIT
- FPOST ;
- +1 GOTO FPOST^DIFROMSC
- EXIT IF $GET(DIFRMSGR)]""
- DO CALLOUT^DIEFU(DIFRMSGR)
- +1 QUIT