[613] | 1 | VSITKIL ;ISL/ARS,JVS - NON INTERACTIVE CHECK DEPENDENT ENTRY COUNT ;8/15/97
|
---|
| 2 | ;;1.0;PCE PATIENT CARE ENCOUNTER;**76**;Aug 12, 1996
|
---|
| 3 | ; Patch PX*1*76 changes the 2nd line of all VSIT* routines to reflect
|
---|
| 4 | ; the incorporation of the module into PCE. For historical reference,
|
---|
| 5 | ; the old (VISIT TRACKING) 2nd line is included below to reference VSIT
|
---|
| 6 | ; patches.
|
---|
| 7 | ;
|
---|
| 8 | ;;2.0;VISIT TRACKING;**1,2**;Aug 12, 1996
|
---|
| 9 | ;;
|
---|
| 10 | KILL(VSITKDFN) ; ENTER THE VSIT YOU WANT CHECKED SET VSITKDFN=IEN
|
---|
| 11 | ; VSITKDFN = Vsit Ien REQUIRED
|
---|
| 12 | ;
|
---|
| 13 | N DIK,VSITKDEC,VSITKND
|
---|
| 14 | S VSITKND=""
|
---|
| 15 | ;
|
---|
| 16 | G:VSITKDFN'=+VSITKDFN!(VSITKDFN="") XIT
|
---|
| 17 | G:'$D(^AUPNVSIT(VSITKDFN,0)) XIT
|
---|
| 18 | ;
|
---|
| 19 | L +^AUPNVSIT(VSITKDFN):45
|
---|
| 20 | S VSITKDEC=$P(^AUPNVSIT(VSITKDFN,0),"^",9)
|
---|
| 21 | S VSITKND=$$DEC^VSITKIL(VSITKDFN)
|
---|
| 22 | I VSITKND'=VSITKDEC,VSITKND'=$P(^AUPNVSIT(VSITKDFN,0),"^",9) S $P(^AUPNVSIT(VSITKDFN,0),"^",9)=VSITKND
|
---|
| 23 | ;Check delete flag and reindex
|
---|
| 24 | I VSITKND>0,$P(^AUPNVSIT(VSITKDFN,0),"^",11)=1 D
|
---|
| 25 | . S $P(^AUPNVSIT(VSITKDFN,0),"^",11)=0
|
---|
| 26 | . S DA=VSITKDFN
|
---|
| 27 | . S DIK="^AUPNVSIT("
|
---|
| 28 | . D IX^DIK
|
---|
| 29 | . K DIK,DA,DR
|
---|
| 30 | I VSITKND=0 D
|
---|
| 31 | . S DIK="^AUPNVSIT("
|
---|
| 32 | . S DA=VSITKDFN
|
---|
| 33 | . D ^DIK
|
---|
| 34 | . K DIK,DA
|
---|
| 35 | . L -^AUPNVSIT(VSITKDFN)
|
---|
| 36 | . K VSITKDFN
|
---|
| 37 | E L -^AUPNVSIT(VSITKDFN)
|
---|
| 38 | XIT ;exit
|
---|
| 39 | Q VSITKND
|
---|
| 40 | ;
|
---|
| 41 | DOC ; This routine checks the dependent entry count of the VISIT file for
|
---|
| 42 | ; accuracy. If it is not correct it is replaced with a correct count
|
---|
| 43 | ; The count is determined by scanning each of the VISIT related
|
---|
| 44 | ; files for entries that point to that VISIT. A count is incremented
|
---|
| 45 | ; each time a "hit" is made.
|
---|
| 46 | ; The user can enter the visit IEN and if there is not any entries
|
---|
| 47 | ; pointing to the entry it is deleted. (not logically but totally)
|
---|
| 48 | Q
|
---|
| 49 | ;
|
---|
| 50 | DEC(VISIT,VISUAL) ;Test looking through DD to find fields pointing to the visit entries.
|
---|
| 51 | ; VISIT=Visit ien to looked up and counted
|
---|
| 52 | ; VISUAL= Set to 1 if you want and interactive display of what is found
|
---|
| 53 | ;
|
---|
| 54 | ; Look for file and field
|
---|
| 55 | ;
|
---|
| 56 | N BECKY,COUNT,FIELD,FILE,GET,PIECE,PX,REF,SNDPIECE,STOP,SUB,VAUGHN
|
---|
| 57 | N VDD,VDDN,VDDR
|
---|
| 58 | ;
|
---|
| 59 | S FILE=""
|
---|
| 60 | F S FILE=$O(^DD(9000010,0,"PT",FILE)) Q:FILE="" D
|
---|
| 61 | .S FIELD=""
|
---|
| 62 | .F S FIELD=$O(^DD(9000010,0,"PT",FILE,FIELD)) Q:FIELD="" D
|
---|
| 63 | ..S VDD(FILE,FIELD)=""
|
---|
| 64 | D REF,QUE
|
---|
| 65 | K VDDN,VDDR
|
---|
| 66 | I $G(VISUAL) W !,"COUNT= "
|
---|
| 67 | Q COUNT
|
---|
| 68 | ;
|
---|
| 69 | REF ;Look for all of the regular cross references and other
|
---|
| 70 | ;
|
---|
| 71 | S FILE="" F S FILE=$O(VDD(FILE)) Q:FILE="" D
|
---|
| 72 | .S FIELD="" F S FIELD=$O(VDD(FILE,FIELD)) Q:FIELD="" D
|
---|
| 73 | ..D REG
|
---|
| 74 | K VDD
|
---|
| 75 | Q
|
---|
| 76 | ;
|
---|
| 77 | REG ;Look for regular cross references
|
---|
| 78 | ;
|
---|
| 79 | S STOP=0
|
---|
| 80 | I '$D(^DD(FILE,FIELD,1)) S VDDN(FILE,FIELD)="" Q
|
---|
| 81 | S SUB=0 F S SUB=$O(^DD(FILE,FIELD,1,SUB)) Q:SUB="" D
|
---|
| 82 | .S GET=$G(^DD(FILE,FIELD,1,SUB,0))
|
---|
| 83 | .I $P(GET,"^",3)']"" S VDDR(FILE,SUB)=FILE_"^"_FIELD_"^"_SUB S STOP=1
|
---|
| 84 | .E S VDDN(FILE,FIELD)=""
|
---|
| 85 | Q
|
---|
| 86 | QUE ;CHECK OUT CROSS REFERENCE
|
---|
| 87 | ;
|
---|
| 88 | S FILE="",FIELD="",STOP="",COUNT=0
|
---|
| 89 | F S FILE=$O(VDDR(FILE)) Q:FILE="" D
|
---|
| 90 | .S SUB=0,STOP="" F S SUB=$O(VDDR(FILE,SUB)) Q:SUB="" Q:STOP=1 S GET=$G(VDDR(FILE,SUB)) D
|
---|
| 91 | ..S REF=$G(^DD($P(GET,"^",1),$P(GET,"^",2),1,$P(GET,"^",3),1))
|
---|
| 92 | ..I $P(REF,"""",1)["DA(1)" Q
|
---|
| 93 | ..S PIECE=$P(REF," ",2)
|
---|
| 94 | ..S SNDPIECE=$P(PIECE,"""",1,2)_""""
|
---|
| 95 | ..S VAUGHN=$P(PIECE,"""",1,2)_""")"
|
---|
| 96 | ..I $D(@VAUGHN) D S STOP=1
|
---|
| 97 | ...S PX=SNDPIECE_",VISIT)"
|
---|
| 98 | ...I $D(@PX) D
|
---|
| 99 | ....S BECKY=0 F S BECKY=$O(@PX@(BECKY)) Q:BECKY="" S COUNT=COUNT+1 W:$G(VISUAL) !," ",SNDPIECE_","_VISIT_","_BECKY
|
---|
| 100 | Q
|
---|
| 101 | ;
|
---|
| 102 | COMP ;COMPARE DEC WITH WHAT UTILITY SAYS
|
---|
| 103 | ;Call this entry point to loop through the entire file to see the
|
---|
| 104 | ;dependent entry points that aren't accurate
|
---|
| 105 | ;
|
---|
| 106 | N CNT,DEC,DEC1,KYRON
|
---|
| 107 | ;
|
---|
| 108 | S CNT=0
|
---|
| 109 | S KYRON=0 F S KYRON=$O(^AUPNVSIT(KYRON)) Q:KYRON'>0 D
|
---|
| 110 | .S DEC=$P(^AUPNVSIT(KYRON,0),"^",9)
|
---|
| 111 | .S DEC1=$$DEC^VSITKIL(KYRON,0)
|
---|
| 112 | .I DEC="",DEC1=0 ;ok, both are zero
|
---|
| 113 | .E I DEC'=DEC1 D
|
---|
| 114 | ..W !,"Visit= "_KYRON,?20,"Entry's Dependent Entry Count= "_DEC,?56,"Found= "_DEC1,?68,"BAD"
|
---|
| 115 | ..S CNT=CNT+1
|
---|
| 116 | ..S DEC1=$$DEC^VSITKIL(KYRON,1)
|
---|
| 117 | W !!,"BAD COUNTS "_CNT
|
---|
| 118 | Q
|
---|