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

DDS5.m

Go to the documentation of this file.
  1. DDS5 ;SFISC/MKO-MULTS,NEXT/PREV PAGE,NEXT BLOCK ;9:53 AM 1 Oct 1999
  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. I X="" D:DDSOLD="" NF^DDS01 D:DDSOLD]"" DM^DDS6 Q
  1. I DIR0N,$D(DUZ)#2 S ^DISV(DUZ,$E(DDSGL,1,28))=$E(DDSGL,29,999)_X
  1. I $G(@DDSREFS@("ASUB",DDSPG,DDSBK,DDO))]"" S DDS5PG=^(DDO)
  1. E I $P($G(DDSO(7)),U,2)="" D:X=DDSOLD NF^DDS01 Q
  1. D MULT,R^DDSR
  1. ;
  1. K DDSSTACK
  1. X:$G(^DIST(.404,DDSBK,40,DDO,10))'?."^" ^(10)
  1. I $D(DDSSTACK) D ^DDSSTK,R^DDS3 K DDSBR
  1. D:$D(DDSBR)#2 BR^DDS2
  1. Q
  1. MULT ;
  1. N DIE,DDO,DDSBK,DDSDN,DDSNP,DDSOPB,DDSPG,DDSPTB,DDSREP,DDSTP
  1. ;
  1. I $G(DDS5PG) S DDSPG=DDS5PG K DDS5PG
  1. E D
  1. . S DDSPG(1)=$P($G(DDSO(7)),U,2) Q:DDSPG(1)=""
  1. . S DDSPG=$O(^DIST(.403,+DDS,40,"B",DDSPG(1),"")) Q:DDSPG=""
  1. Q:$D(^DIST(.403,+DDS,40,+$G(DDSPG),0))[0
  1. N:'$P(^(0),U,6) DDSSC
  1. ;
  1. D DDA(Y,.DA,.DDSDL)
  1. I Y'=-1 D
  1. . N DDP,DDSDA,DDSFLD,DDSDLORG,DDSDAORG,DDSFLORG
  1. . S DIE=U_$P(DDSU("M"),U,2),DDP=$P(DDSU("M"),U,3)
  1. . S DDSDLORG=DDSDL,DDSDAORG=DA,DDSDA=DA_","
  1. . F DDSI=1:1:DDSDL S DDSDAORG(DDSI)=DA(DDSI),DDSDA=DDSDA_DA(DDSI)_","
  1. . K DDSI
  1. . S DDSSTK=1
  1. . D PROC^DDS
  1. D LST(.DA,.DDSDL,DDP,DDSDA,DDSFLD)
  1. D UDA(.DA,.DDSDL)
  1. Q
  1. ;
  1. LST(DA,DDSDL,DDP,DDSDA,DDSFLD) ;Save last edited subrecord
  1. ;In: DA array, DDSDL at subfile level
  1. ; DDP, DDSDA, DDSFLD at file level
  1. N DDSDIE,Y
  1. S DDSDIE=U_$P(@DDSREFT@("F"_DDP,DDSDA,DDSFLD,"M"),U,2)
  1. I $D(@(DDSDIE_"+$G(DA),0)"))[0 D
  1. . S DA=$S($D(@(DDSDIE_"0)"))#2:$P(^(0),U,3),1:$O(^(0)))
  1. . I DA>0 D
  1. .. N C
  1. .. S Y=$P(@(DDSDIE_DA_",0)"),U)
  1. .. S C=$P(^DD(+$P(^DD(DDP,DDSFLD,0),U,2),.01,0),U,2)
  1. .. D Y^DIQ
  1. . E S (DA,Y)=""
  1. E S (DA,Y)=""
  1. I DA>0,$D(DUZ)#2 S ^DISV(DUZ,$E(DDSDIE,1,28))=$E(DDSDIE,29,999)_DA
  1. ;
  1. S @DDSREFT@("F"_DDP,DDSDA,DDSFLD,"X")=Y,^("D")=DA,DDACT="N"
  1. Q
  1. ;
  1. SEL ;Issue the read at the Select mult prompt
  1. S DIR(0)="PO"_DDSGL_":QEMZ"_$E("L",'$D(DDSTP)&'$P($G(DDSO(4)),U,5))_$E("V",$P($G(DDSO(4)),U,6))
  1. I $D(@(DDSGL_"0)"))[0 S ^(0)=U_$P($G(DDSU("DD")),U,2)_U_U
  1. E I $P(@(DDSGL_"0)"),U,2)'=$P($G(DDSU("DD")),U,2) S $P(^(0),U,2)=$P($G(DDSU("DD")),U,2)
  1. D DDA(0,.DA,.DDSDL) S DDSDA="0,"_DDSDA
  1. D ^DIR K DIR,DUOUT,DIRUT,DIROUT
  1. D UDA(.DA,.DDSDL) S DDSDA=$P(DDSDA,",",2,999)
  1. Q:DDACT'="N"
  1. ;
  1. I DIR0N S (X,Y)=DDSOLD Q
  1. I $P(Y,U,3)=1 S ^("ADD")=$G(@DDSREFT@("ADD"))+1,^("ADD",^("ADD"))=+Y_","_DDSDA_DDSGL
  1. E S DIR0N=1
  1. S Y=$P(Y,U)
  1. S:X="" Y=""
  1. Q
  1. ;
  1. DDA(Y,DA,DL) ;Push Y onto DA array
  1. N I
  1. F I=DL:-1:1 S DA(I+1)=DA(I)
  1. S DA(1)=DA,DL=DL+1
  1. S (DA,@("D"_DL))=$S(+$P($G(Y),"E"):+$P(Y,"E"),1:0)
  1. Q
  1. ;
  1. UDA(DA,DL) ;Pop DA array
  1. N I
  1. S DA=DA(1)
  1. F I=2:1:DL S DA(I-1)=DA(I)
  1. K DA(DL),@("D"_DL)
  1. S DL=DL-1
  1. Q
  1. NP(Y) ;Returns: Next page
  1. ; (Y=1 if found, 0 if not found)
  1. N P,P1
  1. S Y=0,P1=$P($G(^DIST(.403,+DDS,40,DDSPG,0)),U,4)
  1. I P1]"" D
  1. . S P=$O(^DIST(.403,+DDS,40,"B",P1,""))
  1. . I P,P'=DDSPG,$D(^DIST(.403,+DDS,40,P,0))#2 S Y=1
  1. Q $S(Y=1:P,1:DDSPG)
  1. PP(Y) ;
  1. N P,P1
  1. S Y=0,P1=$P($G(^DIST(.403,+DDS,40,DDSPG,0)),U,5)
  1. I P1]"" D
  1. . S P=$O(^DIST(.403,+DDS,40,"B",P1,""))
  1. . I P,P'=DDSPG,$D(^DIST(.403,+DDS,40,P,0))#2 S Y=1
  1. Q $S(Y=1:P,1:DDSPG)
  1. NB(Y) ;
  1. N B,BO,X
  1. S (B,Y)=0,BO=$P($G(^DIST(.403,+DDS,40,DDSPG,40,DDSBK,0)),U,2)
  1. I BO F D Q:B=DDSBK!Y
  1. . S BO=$O(^DIST(.403,+DDS,40,DDSPG,40,"AC",BO)) S:'BO BO=$O(^("")) S B=$O(^(BO,""))
  1. . S X=$G(@DDSREFS@(DDSPG,B))
  1. . I $P(X,U)]"",$P(X,U,5)'="h",$P(X,U,9),B'=DDSBK S Y=1
  1. Q B