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

DDSM1.m

Go to the documentation of this file.
  1. DDSM1 ;SFISC/MKO-MULTILINE, LOAD AND DELETE ;2015-01-02 5:49 PM
  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. LOAD(DDSIEN) ;Load subentries
  1. MLOAD ;Entry point from MLOAD^DDSUTL
  1. ;@DDSIEN is an array of record numbers
  1. ;
  1. Q:$D(DDSIEN)[0
  1. Q:$D(@DDSIEN)<9
  1. ;
  1. N DDSI,DDSPDA,DDSRN,DDSSN
  1. S DDSPDA=$P(DDSREP,U)
  1. S DDSSN=$O(@DDSREFT@(DDSPG,DDSBK,DDSPDA," "),-1)
  1. ;
  1. ;Add records to internal ^TMP array
  1. ;Load data for each record
  1. S DDSI="" F S DDSI=$O(@DDSIEN@(DDSI)) Q:DDSI="" D
  1. . S DDSRN=@DDSIEN@(DDSI) Q:'DDSRN
  1. . S DA=+DDSRN,$P(DDSDA,",")=DA,@("D"_DDSDL)=DA
  1. . I $D(@DDSREFT@(DDSPG,DDSBK,DDSPDA,"B",DDSDA))[0 D
  1. .. S DDSSN=DDSSN+1
  1. .. S @DDSREFT@(DDSPG,DDSBK,DDSPDA,"B",DDSDA)=DDSSN
  1. .. S @DDSREFT@(DDSPG,DDSBK,DDSPDA,DDSSN)=DDSDA
  1. .. S ^("ADD")=$G(@DDSREFT@("ADD"))+1,^("ADD",^("ADD"))=DDSDA_DIE
  1. . D EN^DDS11(DDSBK)
  1. . S DDSCHG=1
  1. ;
  1. ;Position the cursor on blank (Select) line
  1. ;Repaint all lines in the repeating block
  1. D POSSN^DDSM(999999999999)
  1. D DMULTN^DDSR(DDSPG,DDSBK,DDSPDA,$P(DDSREP,U,5),1)
  1. ;
  1. ;Update DIR0
  1. DIR0 S DIR0=$P(@DDSREFS@(DDSPG,DDSBK,DDO,"D"),U,1,3)
  1. S:$P($G(DDSREP),U,3)>1 $P(DIR0,U)=$P(DIR0,U)+($P(DDSREP,U,3)-1*$$HITE^DDSR(DDSBK)) ;DJW/GFT
  1. Q
  1. ;
  1. DEL(DDSIEN) ;Delete subentries
  1. MDEL ;Entry point from MDEL^DDSUTL
  1. ;In:
  1. ; If DDSIEN contains a record number, delete that one (G MDELONE)
  1. ; If DDSIEN contains a closed root, @DDSIEN is an array
  1. ; of record numbers to delete
  1. ; DIE = global root
  1. ; DDSDA = current IENS
  1. ;
  1. Q:$D(DDSIEN)[0
  1. G:+$P(DDSIEN,"E") MDELONE
  1. Q:$D(@DDSIEN)<9
  1. ;
  1. N DDSI,DDSPDA,DDSRN,DDSSN
  1. S DDSPDA=$P(DDSREP,U)
  1. ;
  1. ;Loop through passed array and delete subentries
  1. S DDSI="" F S DDSI=$O(@DDSIEN@(DDSI)) Q:DDSI="" D
  1. . ;S DDSRN=@DDSIEN@(DDSI) Q:'DDSRN
  1. . ;S DDSIENS=DDSDA,$P(DDSIENS,",")=+DDSRN
  1. . ;D K^DDS6(DDSIENS,DIE)
  1. . ;Q
  1. . ;
  1. . S DDSRN=@DDSIEN@(DDSI) Q:'DDSRN
  1. . S DA=+DDSRN,$P(DDSDA,",")=DA
  1. . S DDSSN=$G(@DDSREFT@(DDSPG,DDSBK,DDSPDA,"B",DDSDA)) Q:'DDSSN
  1. . K @DDSREFT@(DDSPG,DDSBK,DDSPDA,"B",DDSDA)
  1. . K @DDSREFT@(DDSPG,DDSBK,DDSPDA,DDSSN)
  1. . K @DDSREFT@("F"_DDP,DDSDA)
  1. . K @DDSREFT@("F0",DDSDA)
  1. ;
  1. ;Close up gaps in ^TMP array
  1. S (DDSI,DDSSN)=0
  1. F S DDSI=$O(@DDSREFT@(DDSPG,DDSBK,DDSPDA,DDSI)) Q:'DDSI D
  1. . S DDSSN=DDSSN+1 Q:DDSI=DDSSN
  1. . S DDSRN=@DDSREFT@(DDSPG,DDSBK,DDSPDA,DDSI)
  1. . S @DDSREFT@(DDSPG,DDSBK,DDSPDA,DDSSN)=DDSRN
  1. . S @DDSREFT@(DDSPG,DDSBK,DDSPDA,"B",DDSRN)=DDSSN
  1. ;
  1. F S DDSSN=$O(@DDSREFT@(DDSPG,DDSBK,DDSPDA,DDSSN)) Q:'DDSSN D
  1. . K @DDSREFT@(DDSPG,DDSBK,DDSPDA,DDSSN)
  1. ;
  1. ;Position cursor on "Select" line
  1. ;Repaint all lines in repeating block
  1. D POSSN^DDSM(999999999999,1)
  1. ;
  1. ;Update DIR0
  1. DIR01 D DIR0
  1. Q
  1. ;
  1. MDELONE ;Delete one subentry in the current repeating block
  1. ;In: DDSIEN = IENS of record to be deleted
  1. ; DDSREP = data for repeating blocks
  1. ; DDSDA = current IENS
  1. ; DIE = current global root
  1. ;
  1. N DDSPDA,DDSRN,DDSSN
  1. ;
  1. ;Get parent IENS
  1. S DDSPDA=$P(DDSREP,U)
  1. ;
  1. ;Kill all data pertaining to current (sub)record
  1. D K^DDS6(DDSIEN,DIE)
  1. ;
  1. ;Repaint lines and reposition cursor
  1. I DDSDA=DDSIEN D
  1. . D DMULTN^DDSR(DDSPG,DDSBK,DDSPDA,$P(DDSREP,U,5),$P(DDSREP,U,3))
  1. . S DDSSN=$P(DDSREP,U,4)
  1. . I $D(@DDSREFT@(DDSPG,DDSBK,DDSPDA,DDSSN))[0 D
  1. .. S DDSSN=$O(@DDSREFT@(DDSPG,DDSBK,DDSPDA,DDSSN),-1)
  1. . D POSSN^DDSM(DDSSN)
  1. ;
  1. E D POSSN^DDSM(999999999999,1)
  1. ;
  1. DIR02 D DIR0
  1. Q