[613] | 1 | VAFHPURG ;ALB/JLU;Purging routine. ; 8/9/04 11:00am
|
---|
| 2 | ;;5.3;Registration;**91,219,530,604**;Jun 06, 1996
|
---|
| 3 | ;
|
---|
| 4 | ;This routine will delete all entries from the ADT/HL7 PIVOT
|
---|
| 5 | ;(#391.71) file that are older than number of days specified
|
---|
| 6 | ;in field #391.702 of file #43.
|
---|
| 7 | ;
|
---|
| 8 | EN ;entry point
|
---|
| 9 | N DA,DIC,DIQ,DR,VAR1,VARA,DAYS,X1,X2
|
---|
| 10 | ;find number of days worth of file entries to be retained
|
---|
| 11 | S VAR1=$O(^DG(43,0))
|
---|
| 12 | S DIC="^DG(43,",DA=VAR1,DIQ="VARA",DIQ(0)="I",DR="391.702;"
|
---|
| 13 | D EN^DIQ1
|
---|
| 14 | ;use 547 days (18 months) unless otherwise specified
|
---|
| 15 | S DAYS=VARA(43,VAR1,391.702,"I") S:+DAYS=0 DAYS=547
|
---|
| 16 | D DT^DICRW
|
---|
| 17 | S X1=DT
|
---|
| 18 | S X2=-DAYS
|
---|
| 19 | D C^%DTC
|
---|
| 20 | S (Y,VAFHEDT)=X
|
---|
| 21 | D DD^%DT
|
---|
| 22 | W:'$D(ZTQUEUED) !!,"All ADT/HL7 PIVOT entries older than ",Y," will be deleted!",!
|
---|
| 23 | D KIL1
|
---|
| 24 | ;iofo-bay pines;vmp;teh; modification to quit logical to prevent null subscript.
|
---|
| 25 | F VAFHX=0:0 S VAFHX=$O(^VAT(391.71,"B",VAFHX)) Q:VAFHX>VAFHEDT!(VAFHX="") D DELETE
|
---|
| 26 | D EXIT
|
---|
| 27 | ;D CLEAN
|
---|
| 28 | ;D EXIT
|
---|
| 29 | Q
|
---|
| 30 | ;
|
---|
| 31 | DELETE ;this will do that actual deletion.
|
---|
| 32 | ;
|
---|
| 33 | N DA,DIK,EVENT,MOVE,OUT
|
---|
| 34 | S DA=0
|
---|
| 35 | F S DA=+$O(^VAT(391.71,"B",VAFHX,DA)) Q:('DA) D
|
---|
| 36 | .;DG*604 - skip if no zero node
|
---|
| 37 | .I '$D(^VAT(391.71,DA,0)) Q
|
---|
| 38 | .;don't delete inpatient event records before discharge
|
---|
| 39 | .S EVENT=+$P(^VAT(391.71,DA,0),U,4)
|
---|
| 40 | .I EVENT=1 D Q:OUT
|
---|
| 41 | ..S OUT=0
|
---|
| 42 | ..S MOVE=$P(^VAT(391.71,DA,0),U,5)
|
---|
| 43 | ..Q:MOVE'["DGPM"
|
---|
| 44 | ..I $P($G(^DGPM(+MOVE,0)),U,17)="" S OUT=1
|
---|
| 45 | .;don't delete if requires transmission
|
---|
| 46 | .Q:$D(^VAT(391.71,"AXMIT",EVENT,DA))
|
---|
| 47 | .;delete
|
---|
| 48 | .S DIK="^VAT(391.71,"
|
---|
| 49 | .D ^DIK
|
---|
| 50 | .W:'$D(ZTQUEUED) "."
|
---|
| 51 | Q
|
---|
| 52 | ;
|
---|
| 53 | EXIT ;kills variables
|
---|
| 54 | K VAFHX,VAFHEDT,X,Y
|
---|
| 55 | Q
|
---|
| 56 | ;
|
---|
| 57 | KIL1 K X,Y,%DT
|
---|
| 58 | Q
|
---|
| 59 | ;
|
---|
| 60 | CLEAN ; delete entries with invalid event pointer, ie doesn't exist
|
---|
| 61 | ; CLEAN^VAFHPURG may be run directly from programmer mode
|
---|
| 62 | ;
|
---|
| 63 | I '$D(ZTQUEUED) W !!,"All ADT/HL7 PIVOT entries with invalid EVENT POINTERS will be deleted",!
|
---|
| 64 | D DT^DICRW
|
---|
| 65 | N EVENTVP,GLOBAL,GLOBALR,NODE
|
---|
| 66 | S VAFHX=0
|
---|
| 67 | F S VAFHX=$O(^VAT(391.71,VAFHX)) Q:'VAFHX S NODE=$G(^(VAFHX,0)) DO
|
---|
| 68 | .; if no .01 date/time
|
---|
| 69 | . I 'NODE D REMOVE Q
|
---|
| 70 | . S EVENTVP=$P(NODE,"^",5)
|
---|
| 71 | .; if event pointer has no pointer
|
---|
| 72 | . I 'EVENTVP D REMOVE Q
|
---|
| 73 | . S GLOBAL=$P(EVENTVP,";",2)
|
---|
| 74 | .; if event pointer has no variable
|
---|
| 75 | . I GLOBAL="" D REMOVE Q
|
---|
| 76 | .; if variable not distributed
|
---|
| 77 | . I "DPT(DGPM(SCE("'[GLOBAL D REMOVE Q
|
---|
| 78 | . S GLOBALR="^"_GLOBAL_+EVENTVP_")"
|
---|
| 79 | .;
|
---|
| 80 | . I $D(@GLOBALR) Q
|
---|
| 81 | .; if no pointed to eentr delete this oney
|
---|
| 82 | . D REMOVE Q
|
---|
| 83 | Q
|
---|
| 84 | ;
|
---|
| 85 | ;either the pointed to entry doesn't exist or the VP entry is invalid
|
---|
| 86 | ;so delete it
|
---|
| 87 | REMOVE S DA=VAFHX
|
---|
| 88 | S DIK="^VAT(391.71,"
|
---|
| 89 | D ^DIK
|
---|
| 90 | I '$D(ZTQUEUED) W ","
|
---|
| 91 | K DIK,DA
|
---|
| 92 | Q
|
---|