1 | ORY110 ;SLC/DAN--Clean up orderable items file ;1/4/02 13:57
|
---|
2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**110**;Dec 17, 1997
|
---|
3 | N IEN,DIK,IEN6,COUNT
|
---|
4 | K ^ORD(101.43,"B") ;Delete "B" cross reference to be rebuilt below
|
---|
5 | D MES^XPDUTL("Re-indexing the B cross reference of the SYNONYM field...")
|
---|
6 | S IEN=0 F S IEN=$O(^ORD(101.43,IEN)) Q:'+IEN D
|
---|
7 | .I $G(^ORD(101.43,IEN,0))="" K ^ORD(101.43,IEN) Q ;Delete extraneous nodes when 0 node doesn't exist
|
---|
8 | .I $O(^ORD(101.43,IEN,2,0)) K ^ORD(101.43,IEN,2,"B") S DIK="^ORD(101.43,IEN,2,",DIK(1)=".01^B",DA(1)=IEN D ENALL^DIK ;Reset "B" cross reference for synonym multiple
|
---|
9 | ;
|
---|
10 | K DIK,DA
|
---|
11 | D MES^XPDUTL("Re-indexing the B cross reference of the ORDERABLE ITEMS file")
|
---|
12 | S DIK="^ORD(101.43,",DIK(1)=".01^B" D ENALL^DIK ;Rebuild B cross reference at the file level
|
---|
13 | ;
|
---|
14 | D BMES^XPDUTL("Reviewing ORDER DIALOG file for incorrect pointer default values.")
|
---|
15 | S IEN=0 F S IEN=$O(^ORD(101.41,IEN)) Q:'+IEN I $D(^(IEN,6)) D
|
---|
16 | .S IEN6=0 F S IEN6=$O(^ORD(101.41,IEN,6,IEN6)) Q:'+IEN6 I $L($G(^(IEN6,1)),"^")>1 S ^ORD(101.41,IEN,6,IEN6,1)=$P(^ORD(101.41,IEN,6,IEN6,1),"^"),COUNT=$G(COUNT)+1
|
---|
17 | D MES^XPDUTL("Finished."_$S($G(COUNT)>0:" Fixed "_$G(COUNT)_" node"_$S($G(COUNT)>1:"s.",1:"."),1:""))
|
---|
18 | ;
|
---|
19 | S ZTRTN="DQ^ORY110",ZTDTH=$H,ZTDESC="Patch OR*3*110 ORDER file cleanup",ZTSAVE("DUZ")="",ZTIO="" D ^%ZTLOAD
|
---|
20 | D MES^XPDUTL("Starting ORDER file clean-up job in the background. Task # "_+$G(ZTSK))
|
---|
21 | Q
|
---|
22 | ;
|
---|
23 | DQ ;Entry point for background job to clean up ORDER file
|
---|
24 | N IEN,SUB,COUNT
|
---|
25 | S IEN=$$GETIEN(3010826.24)-1 ;get first IEN for date, subtract one so first IEN is reviewed
|
---|
26 | I IEN=-1 D MAIL Q
|
---|
27 | F S IEN=$O(^OR(100,IEN)) Q:'+IEN D
|
---|
28 | .S SUB=0 F S SUB=$O(^OR(100,IEN,.1,SUB)) Q:'+SUB D
|
---|
29 | ..I $L($G(^(SUB,0)),"^")>1 D
|
---|
30 | ...N DIK,DA
|
---|
31 | ...K ^OR(100,IEN,.1,"B",$G(^OR(100,IEN,.1,SUB,0))) ;delete current B xref
|
---|
32 | ...S ^OR(100,IEN,.1,SUB,0)=$P(^OR(100,IEN,.1,SUB,0),"^") ;remove extra pieces
|
---|
33 | ...S DIK="^OR(100,IEN,.1,",DIK(1)=".01^B" ;set index to be reset and global node
|
---|
34 | ...S DA=SUB,DA(1)=IEN ;DA is subfile IEN, DA(1) is file level IEN
|
---|
35 | ...D EN1^DIK ;Set B xref for this entry
|
---|
36 | ...Q
|
---|
37 | .S SUB=0 F S SUB=$O(^OR(100,IEN,4.5,SUB)) Q:'+SUB D
|
---|
38 | ..I $L($G(^(SUB,1)),"^")>1 S ^(1)=$P(^(1),"^"),COUNT=$G(COUNT)+1 ;remove extra pieces, count changes
|
---|
39 | ;
|
---|
40 | D MAIL ;Send mail notification upon completion
|
---|
41 | Q
|
---|
42 | ;
|
---|
43 | GETIEN(STDT) ;Find first IEN associated with given start date
|
---|
44 | N DONE,IEN
|
---|
45 | S (DONE,IEN)=0
|
---|
46 | F S STDT=$O(^OR(100,"AF",STDT)) Q:'+STDT!(DONE) D
|
---|
47 | .S IEN=0 F S IEN=$O(^OR(100,"AF",STDT,IEN)) Q:'+IEN I $O(^(IEN,0))=1 S DONE=1 Q ;Find first ORDER that is a new order
|
---|
48 | Q IEN
|
---|
49 | ;
|
---|
50 | MAIL ;Send email when finished
|
---|
51 | N XMSUB,XMTEXT,XMDUZ,ORTXT,XMY
|
---|
52 | S XMDUZ="Patch OR*3*110 Post-Init"
|
---|
53 | S XMY(.5)="" S:$G(DUZ) XMY(DUZ)=""
|
---|
54 | S ORTXT(1)="The ORDER file clean-up initiated by patch OR*3*110 has completed."
|
---|
55 | S ORTXT(2)=""
|
---|
56 | S ORTXT(3)="There were "_$S($G(COUNT):COUNT,1:"no")_" changes made to the ORDER file."
|
---|
57 | S XMTEXT="ORTXT("
|
---|
58 | S XMSUB="Patch OR*3*110 ORDER file clean-up completed."
|
---|
59 | D ^XMD
|
---|
60 | Q
|
---|