[613] | 1 | VAFHPIVT ;ALB/CM PIVOT FILE UTILITY FUNCTIONS ;5/5/95
|
---|
| 2 | ;;5.3;Registration;**91,179,575**;Jun 06, 1996
|
---|
| 3 | ;
|
---|
| 4 | PIVNW(DFN,EVDT,EVTY,PTR) ;
|
---|
| 5 | ;function will return 0 node of pivot file and pivot file entry number
|
---|
| 6 | ;if no entry in pivot file, create one and return #:0 node
|
---|
| 7 | ;
|
---|
| 8 | Q:$G(DFN)=""!($G(EVDT)="")!($G(EVTY)="")!($G(PTR)="") "-1^Missing Parameters for PIVNW function"
|
---|
| 9 | I $G(^DPT(DFN,0))="" Q "-1^PATIENT WITH PASSED DFN DOES NOT EXIST"
|
---|
| 10 | N CROSS,DA,NODE,NEW,PIVOT,ERR,TNODE,NNODE,FCNT,FIELDS,FLD,X,STOP
|
---|
| 11 | I '$D(^VAT(391.71,"AKY",EVTY,EVDT,PTR)) D
|
---|
| 12 | .;not in pivot file
|
---|
| 13 | .S PIVOT=$$GETPIV^VAFHPIV2() ;get next pivot file number
|
---|
| 14 | .I +PIVOT=-1 S ERR="Y"
|
---|
| 15 | .I '$D(ERR) S NEW="Y"
|
---|
| 16 | ;
|
---|
| 17 | I $D(^VAT(391.71,"AKY",EVTY,EVDT,PTR)) D
|
---|
| 18 | .;check if it's been marked as deleted
|
---|
| 19 | .S DA=$O(^VAT(391.71,"AKY",EVTY,EVDT,PTR,""))
|
---|
| 20 | .I $P(^VAT(391.71,DA,0),"^",7)'="" D
|
---|
| 21 | ..S STOP="N"
|
---|
| 22 | ..F S DA=$O(^VAT(391.71,"AKY",EVTY,EVDT,PTR,DA)) Q:DA="" I $D(^VAT(391.71,DA)) S:$P(^VAT(391.71,DA,0),"^",7)="" STOP="Y" Q:STOP="Y"
|
---|
| 23 | ..I DA="" S PIVOT=$$GETPIV^VAFHPIV2() I +PIVOT>0 S NEW="Y"
|
---|
| 24 | .I '$D(PIVOT) S PIVOT=$P(^VAT(391.71,DA,0),"^",2)
|
---|
| 25 | .I $D(PIVOT) S:+PIVOT=-1 ERR="Y"
|
---|
| 26 | I $D(ERR) Q "-1^Can't get new pivot number"
|
---|
| 27 | I $D(NEW) D
|
---|
| 28 | .;Set up initial entry, get next internal entry number
|
---|
| 29 | .L +^VAT(391.71,0):5 I '$T S ERR="-1^Unable to lock Pivot file" Q
|
---|
| 30 | .S DA=$P(^VAT(391.71,0),"^",3)
|
---|
| 31 | .F S DA=DA+1 Q:'$D(^VAT(391.71,DA))
|
---|
| 32 | .S ^VAT(391.71,DA,0)="" L +^VAT(391.71,DA,0):5 I '$T S ERR="-1^Unable to lock Pivot file entry" L -^VAT(391.71,0) Q
|
---|
| 33 | .S $P(^VAT(391.71,0),"^",3)=DA,$P(^VAT(391.71,0),"^",4)=$P(^VAT(391.71,0),"^",4)+1 L -^VAT(391.71,0)
|
---|
| 34 | .S ^VAT(391.71,DA,0)=EVDT,CROSS=0
|
---|
| 35 | .;Set cross references for .01
|
---|
| 36 | .F S CROSS=$O(^DD(391.71,.01,1,CROSS)) Q:'CROSS I $G(^(CROSS,0))'["TRIGGER" D
|
---|
| 37 | ..S X=EVDT X ^DD(391.71,.01,1,CROSS,2) ;kill cross reference
|
---|
| 38 | ..S X=EVDT X ^DD(391.71,.01,1,CROSS,1) ;set cross reference
|
---|
| 39 | .L -^VAT(391.71,DA,0)
|
---|
| 40 | ;
|
---|
| 41 | I '$D(ERR) D
|
---|
| 42 | .L +^VAT(391.71,DA,0):5 I '$T S ERR="-1^Unable to lock Pivot file entry" Q
|
---|
| 43 | .S TNODE=$G(^VAT(391.71,DA,0))
|
---|
| 44 | .I '$D(DGUSER) S DGUSER=DUZ
|
---|
| 45 | .S ^VAT(391.71,DA,0)=EVDT_"^"_PIVOT_"^"_DFN_"^"_EVTY_"^"_PTR_"^^^^"_$G(DGUSER)
|
---|
| 46 | .S NNODE=$G(^VAT(391.71,DA,0))
|
---|
| 47 | .;set cross references for all fields .01,.02,.03,.04,.05
|
---|
| 48 | .S FIELDS=".01,.02,.03,.04,.05",FCNT=0
|
---|
| 49 | .F S FCNT=FCNT+1,FLD=$P(FIELDS,",",FCNT) Q:FLD="" D
|
---|
| 50 | ..S CROSS=0
|
---|
| 51 | ..F S CROSS=$O(^DD(391.71,FLD,1,CROSS)) Q:'CROSS I $G(^(CROSS,0))'["TRIGGER" D
|
---|
| 52 | ...I TNODE'="" S X=$P(TNODE,"^",FCNT) I X'="" X ^DD(391.71,FLD,1,CROSS,2) ;kill cross reference
|
---|
| 53 | ...S X=$P(NNODE,"^",FCNT) X ^DD(391.71,FLD,1,CROSS,1) ;set cross reference
|
---|
| 54 | .L -^VAT(391.71,DA,0)
|
---|
| 55 | I $D(ERR) Q ERR
|
---|
| 56 | I $D(^VAT(391.71,"AKY",EVTY,EVDT,PTR)) D
|
---|
| 57 | .;have entry in pivot file
|
---|
| 58 | .S DA=$O(^VAT(391.71,"AKY",EVTY,EVDT,PTR,"")) I DA="" S ERR="-1^Bad AKY Cross Reference"
|
---|
| 59 | .I '$D(ERR) S STOP="N" F Q:DA=""!(STOP="Y") D
|
---|
| 60 | ..I $D(^VAT(391.71,DA,0)) D
|
---|
| 61 | ...I $P(^VAT(391.71,DA,0),"^",7)'=1 S NODE=$G(^VAT(391.71,DA,0)),PIVOT=$P(NODE,"^",2),STOP="Y"
|
---|
| 62 | ...I $P(^VAT(391.71,DA,0),"^",7)=1 S DA=$O(^VAT(391.71,"AKY",EVTY,EVDT,PTR,DA))
|
---|
| 63 | I '$D(^VAT(391.71,"AKY",EVTY,EVDT,PTR)) S ERR="-1^ERROR NO AKY CROSS REFERENCE"
|
---|
| 64 | I $D(ERR) Q ERR
|
---|
| 65 | Q PIVOT_":"_NODE
|
---|
| 66 | ;
|
---|
| 67 | PIVX(PIVOT,DFN,EVDT) ;
|
---|
| 68 | ;given pivot #, check for existence and compare the data in file to
|
---|
| 69 | ;parameters, return pivot number:0 node
|
---|
| 70 | I $G(PIVOT)="" Q "-1^Missing Parameters for PIVX function"
|
---|
| 71 | I '$D(^VAT(391.71,"D",PIVOT)) Q "-1^No entry in Pivot file"
|
---|
| 72 | N ENT,ERR S ENT=$O(^VAT(391.71,"D",PIVOT,""))
|
---|
| 73 | I ENT="" Q "-1^BAD 'D' CROSS REFERENCE"
|
---|
| 74 | S NODE=$G(^VAT(391.71,ENT,0))
|
---|
| 75 | I $D(DFN) I $P(NODE,"^",3)'=DFN S ERR="-1^PATIENTS DON'T MATCH"
|
---|
| 76 | I $D(EVDT) I $P(NODE,"^")'=EVDT S ERR="-1^DATE/TIME DOESN'T MATCH"
|
---|
| 77 | I $P(NODE,"^",7)'="" S ERR="-1^No entry in Pivot file"
|
---|
| 78 | I $D(ERR) Q ERR
|
---|
| 79 | Q PIVOT_":"_NODE
|
---|
| 80 | ;
|
---|
| 81 | PIVCHK(DFN,EVDT,EVTY,PTR) ;
|
---|
| 82 | ;check for existence of pivot file entry.
|
---|
| 83 | ;If exist, return pivot number:0 node. If not exist, return 0
|
---|
| 84 | I $G(DFN)=""!($G(EVDT)="")!($G(EVTY)="")!($G(PTR)="") Q "-1^Missing parameter for PIVCHK function"
|
---|
| 85 | I $G(^DPT(DFN,0))="" Q "-1^PATIENT WITH PASSED DFN DOES NOT EXIST"
|
---|
| 86 | ;
|
---|
| 87 | I '$D(^VAT(391.71,"AKY",EVTY,EVDT,PTR)) Q "-1^No Entry in Pivot File"
|
---|
| 88 | I $O(^VAT(391.71,"AKY",EVTY,EVDT,PTR,""))="" Q "-1^Bad AKY Cross Reference"
|
---|
| 89 | N DA,EVENT,NODE
|
---|
| 90 | S (DA,NODE,EVENT)=0
|
---|
| 91 | F S DA=$O(^VAT(391.71,"AKY",EVTY,EVDT,PTR,DA)) Q:'DA DO Q:EVENT
|
---|
| 92 | . S NODE=$G(^VAT(391.71,DA,0))
|
---|
| 93 | . I $P(NODE,"^",7)=1 Q
|
---|
| 94 | . S EVENT=$P(NODE,"^",2)
|
---|
| 95 | ;
|
---|
| 96 | I 'EVENT Q "-1^NO Entry in Pivot File"
|
---|
| 97 | I $P(NODE,"^",3)'=DFN Q "-1^DFN DOES NOT MATCH PIVOT DFN"
|
---|
| 98 | Q EVENT_":"_NODE
|
---|
| 99 | ;
|
---|
| 100 | Q
|
---|