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

VAFHPURG.m

Go to the documentation of this file.
  1. VAFHPURG ;ALB/JLU;Purging routine. ; 8/9/04 11:00am
  1. ;;5.3;Registration;**91,219,530,604**;Jun 06, 1996
  1. ;
  1. ;This routine will delete all entries from the ADT/HL7 PIVOT
  1. ;(#391.71) file that are older than number of days specified
  1. ;in field #391.702 of file #43.
  1. ;
  1. EN ;entry point
  1. N DA,DIC,DIQ,DR,VAR1,VARA,DAYS,X1,X2
  1. ;find number of days worth of file entries to be retained
  1. S VAR1=$O(^DG(43,0))
  1. S DIC="^DG(43,",DA=VAR1,DIQ="VARA",DIQ(0)="I",DR="391.702;"
  1. D EN^DIQ1
  1. ;use 547 days (18 months) unless otherwise specified
  1. S DAYS=VARA(43,VAR1,391.702,"I") S:+DAYS=0 DAYS=547
  1. D DT^DICRW
  1. S X1=DT
  1. S X2=-DAYS
  1. D C^%DTC
  1. S (Y,VAFHEDT)=X
  1. D DD^%DT
  1. W:'$D(ZTQUEUED) !!,"All ADT/HL7 PIVOT entries older than ",Y," will be deleted!",!
  1. D KIL1
  1. ;iofo-bay pines;vmp;teh; modification to quit logical to prevent null subscript.
  1. F VAFHX=0:0 S VAFHX=$O(^VAT(391.71,"B",VAFHX)) Q:VAFHX>VAFHEDT!(VAFHX="") D DELETE
  1. D EXIT
  1. ;D CLEAN
  1. ;D EXIT
  1. Q
  1. ;
  1. DELETE ;this will do that actual deletion.
  1. ;
  1. N DA,DIK,EVENT,MOVE,OUT
  1. S DA=0
  1. F S DA=+$O(^VAT(391.71,"B",VAFHX,DA)) Q:('DA) D
  1. .;DG*604 - skip if no zero node
  1. .I '$D(^VAT(391.71,DA,0)) Q
  1. .;don't delete inpatient event records before discharge
  1. .S EVENT=+$P(^VAT(391.71,DA,0),U,4)
  1. .I EVENT=1 D Q:OUT
  1. ..S OUT=0
  1. ..S MOVE=$P(^VAT(391.71,DA,0),U,5)
  1. ..Q:MOVE'["DGPM"
  1. ..I $P($G(^DGPM(+MOVE,0)),U,17)="" S OUT=1
  1. .;don't delete if requires transmission
  1. .Q:$D(^VAT(391.71,"AXMIT",EVENT,DA))
  1. .;delete
  1. .S DIK="^VAT(391.71,"
  1. .D ^DIK
  1. .W:'$D(ZTQUEUED) "."
  1. Q
  1. ;
  1. EXIT ;kills variables
  1. K VAFHX,VAFHEDT,X,Y
  1. Q
  1. ;
  1. KIL1 K X,Y,%DT
  1. Q
  1. ;
  1. CLEAN ; delete entries with invalid event pointer, ie doesn't exist
  1. ; CLEAN^VAFHPURG may be run directly from programmer mode
  1. ;
  1. I '$D(ZTQUEUED) W !!,"All ADT/HL7 PIVOT entries with invalid EVENT POINTERS will be deleted",!
  1. D DT^DICRW
  1. N EVENTVP,GLOBAL,GLOBALR,NODE
  1. S VAFHX=0
  1. F S VAFHX=$O(^VAT(391.71,VAFHX)) Q:'VAFHX S NODE=$G(^(VAFHX,0)) DO
  1. .; if no .01 date/time
  1. . I 'NODE D REMOVE Q
  1. . S EVENTVP=$P(NODE,"^",5)
  1. .; if event pointer has no pointer
  1. . I 'EVENTVP D REMOVE Q
  1. . S GLOBAL=$P(EVENTVP,";",2)
  1. .; if event pointer has no variable
  1. . I GLOBAL="" D REMOVE Q
  1. .; if variable not distributed
  1. . I "DPT(DGPM(SCE("'[GLOBAL D REMOVE Q
  1. . S GLOBALR="^"_GLOBAL_+EVENTVP_")"
  1. .;
  1. . I $D(@GLOBALR) Q
  1. .; if no pointed to eentr delete this oney
  1. . D REMOVE Q
  1. Q
  1. ;
  1. ;either the pointed to entry doesn't exist or the VP entry is invalid
  1. ;so delete it
  1. REMOVE S DA=VAFHX
  1. S DIK="^VAT(391.71,"
  1. D ^DIK
  1. I '$D(ZTQUEUED) W ","
  1. K DIK,DA
  1. Q