Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: DIT3

DIT3.m

Go to the documentation of this file.
  1. DIT3 ;SFISC/TKW - SILENT TRANSFER/MERGE ROUTINE ;10/14/94 13:50
  1. ;;22.2;VA FileMan;;Jan 05, 2016;Build 42
  1. ;;Per VA Directive 6402, this routine should not be modified.
  1. ;;Submitted to OSEHRA 5 January 2015 by the VISTA Expertise Network.
  1. ;;Based on Medsphere Systems Corporation's MSC FileMan 1051.
  1. ;;Licensed under the terms of the Apache License, Version 2.0.
  1. ;
  1. TRNMRG ; TRANSFER OR MERGE RECORDS SILENTLY (CALLED FROM TRNMRG^DIT)
  1. N I,J,Z,DITYPM,DDF,DDT,DFR,DMRG,DKP,DTO,DFL,DTL,DA,DIZZ,DIERRMSG,DIK,DITF D CLEAN^DIEFU
  1. F I=1:1 S DITYPM=$E(DIFLG,I) Q:DITYPM="" Q:"MOAR"[DITYPM
  1. I DITYPM="" G ERR0
  1. I '$G(DIFFNO),$G(DITFNO) S DFR=DIFFNO,DIFFNO=+DITFNO I $E(DFR,$L(DFR))=")" S DFR=$$OREF^DIQGU(DFR)
  1. I '$G(DIFFNO)!('$D(^DD(+$G(DIFFNO),.01,0))) S DIERRMSG=$$EZBLD^DIALOG(8082)_" "_$$EZBLD^DIALOG(8084) G ERR3
  1. S DITFNO=+$G(DITFNO) S:'DITFNO DITFNO=DIFFNO I DITFNO'=DIFFNO,'$D(^DD(DITFNO,.01,0)) S DIERRMSG=$$EZBLD^DIALOG(8083)_" "_$$EZBLD^DIALOG(8084) G ERR3
  1. I '$G(DIFIEN) S DIERRMSG=$$EZBLD^DIALOG(8082)_" "_$$EZBLD^DIALOG(8085) G ERR3
  1. F I=0:1 S J=$P(DIFIEN,",",I+1) Q:'J S DA(I)=J,DFL=I*2+1
  1. S (I,J)=I-1 D G:I'=J ERR5
  1. . I I=0,$D(^DD(DIFFNO,0,"UP")) S J=-1 Q
  1. . N Z S Z=DIFFNO,J=0 F Q:'$D(^DD(Z,0,"UP")) S J=J+1,Z=^("UP")
  1. . Q
  1. S J=0
  1. SD0 N @("D"_J) S @("D"_J)=DA(I),I=I-1,J=J+1 I I>-1 G SD0
  1. S DA=DA(0) K DA(0)
  1. S DDF(DFL)=DIFFNO,DDT(DFL-1)=DITFNO S:DIFFNO=DITFNO DDT(DFL)=DITFNO
  1. S DFR(DFL)=$S($G(DFR)]"":DFR,1:$$ROOT^DIQGU(DIFFNO,DIFIEN,"",1))_+DIFIEN_"," Q:$D(DIERR) G:'$D(@(DFR(DFL)_"0)")) ERR1 S DIZZ=^(0)
  1. S:$G(DITIEN)="" DITIEN="+?1,"_$P(DIFIEN,",",2,99)
  1. Q:'$$IENCHK(DITFNO,DITIEN)
  1. S (DTO(DFL-1),DIK)=$$ROOT^DIQGU(DITFNO,DITIEN,"",1) Q:$D(DIERR)
  1. I DITIEN S DTO(DFL)=DTO(DFL-1)_+DITIEN_"," I '$D(@(DTO(DFL)_"0)")) G ERR2
  1. I 'DITIEN,$D(^DD(DITFNO,0,"UP")) D I '$D(DITIEN) G ERR2
  1. . N X,Y,Z S X=^DD(DITFNO,0,"UP"),Y=$P(DITIEN,",",2,99),Z=$$ROOT^DIQGU(X,Y) I $D(DIERR) K DITIEN Q
  1. . I '$D(@(Z_$P(Y,",")_",0)")) K DITIEN Q
  1. . I $P($G(^DD(DITFNO,.01,0)),U,2)["W" K DITIEN Q
  1. . I '$D(@(DTO(DFL-1)_"0)")) S Z=$O(^DD(X,"SB",DITFNO,0)) I Z S Z=$P($G(^DD(X,Z,0)),U,2) I Z S @(DTO(DFL-1)_"0)")="^"_Z_"^^"
  1. . Q
  1. I DIFFNO'=DITFNO D I '$D(DITF) G ERR4
  1. . N %,A,L,V,X,Y,Z,DIC K ^UTILITY("DITR",$J)
  1. . S A=1,L=0,L(DDF(DFL))=DDT(DFL-1)
  1. . D MAP2^DIT Q
  1. S DMRG=$S(DIFLG["A":0,1:1),DKP=$S(DIFLG["M":1,1:0),DTO=$S(DIFFNO=DITFNO:0,1:1)
  1. N %,A,B,V,W,X,Y,DFN,DTN,DINUM,DIC,DIIX
  1. I 'DITIEN D Q:A
  1. . S (DFL,DTL)=DFL-1,Z=DIZZ D ^DITR1 Q:A
  1. . S DFL=DFL+1,DITIEN=+Y_","_$P(DITIEN,",",2,99)
  1. . Q
  1. S DTL=DFL,DFN(DFL)=-1 D N^DITR
  1. I DIFLG'["X" Q
  1. K DA F I=1:1 S J=$P(DITIEN,",",I) Q:'J S:I=1 DA=J I I>1 S DA(I-1)=J
  1. D IXALL^DIK
  1. Q
  1. ;
  1. IENCHK(DIFILE,DIIEN) ;EXTRINSIC FUNCTIO TO CHECK THAT IEN STRING AND FILE/SUBFILE NO. ARE IN SYNC
  1. ;DIFILE=file/subfile#, DIIEN=IEN string
  1. N I,J
  1. S I=$L($G(DIIEN),",") I I=1 G ERX
  1. S I=I-1,J=0 D I I'=J G ERX
  1. . I I=1,$D(^DD(DIFILE,0,"UP")) Q
  1. . S J=1 F Q:'$D(^DD(DIFILE,0,"UP")) S J=J+1,DIFILE=^("UP")
  1. . Q
  1. Q 1
  1. ERX K I S I(1)=DIFILE,I("IENS")=DIIEN D BLD^DIALOG(205,.I) Q 0
  1. ;
  1. ERR0 D BLD^DIALOG(301,DIFLG) Q
  1. ERR1 S DIERRMSG=$$EZBLD^DIALOG(8082)_" "_$$EZBLD^DIALOG(8078) G ERR3
  1. ERR2 S DIERRMSG=$$EZBLD^DIALOG(8083)_" "_$$EZBLD^DIALOG(8078)
  1. ERR3 D BLD^DIALOG(202,DIERRMSG) Q
  1. ERR4 D BLD^DIALOG(1504) Q
  1. ERR5 K I S I(1)=DIFFNO,I("IENS")=DIFIEN D BLD^DIALOG(205,.I) Q
  1. ;202 The input param...that identifies...|1| is missing or invalid.
  1. ;205 File...number and IEN string represent different...levels.
  1. ;301 The passed flag(s) '|1|' are unknown or inconsistent.
  1. ;1504 No matching .01 field names...Transfer/Merge cannot be done
  1. ;8082 Transfer FROM
  1. ;8083 Transfer TO
  1. ;8084 file number
  1. ;8085 IEN string
  1. ;