1 | IMRIPST ;HCIOFO/NCA,FT-Post-Init Immunology Routine ;11/10/97 9:02
|
---|
2 | ;;2.1;IMMUNOLOGY CASE REGISTRY;;Feb 09, 1998
|
---|
3 | Q:+$$VERSION^XPDUTL("IMR")'>0 ;quit if virgin install
|
---|
4 | Q:'$D(^IMR(158.96)) ;quit if post-init has already run
|
---|
5 | D DELFLDS,DELRTN,DELDATA,DELOPT,PROC,NLF,DELFILE,DELIP,F15895
|
---|
6 | D EXTRACT,RESCHED,KILL
|
---|
7 | D ^IMRIPST1
|
---|
8 | Q
|
---|
9 | DELFLDS ; delete unused fields from File 158
|
---|
10 | D BMES^XPDUTL("Removing Unused Data Dictionary Fields...")
|
---|
11 | K DA,DIK S DIK="^DD(158,",DA(1)=158 F DA=102.03,102.04,106.01,106.02,106.03,106.04,106.05,106.07,106.08,106.09,106.1,106.11,107.01,107.02,107.03,107.04,107.05,107.06,107.07,107.08 D ^DIK
|
---|
12 | K DA,DIK S DIK="^DD(158.9,",DA(1)=158.9 F DA=.02,.03,.04,.08,.11,.12,.13 D ^DIK
|
---|
13 | K DA,DIK S DIK="^DD(158.921,",DA(1)=158.921,DA=.02 D ^DIK
|
---|
14 | K DA,DIK
|
---|
15 | Q
|
---|
16 | ;
|
---|
17 | DELRTN ; delete unused routines
|
---|
18 | D BMES^XPDUTL("Deleting Unused Routines...")
|
---|
19 | F X="IMRLRAD","IMRLRAD1","IMRLRAD2","IMRSRX","IMRSRX1","IMRLRX","IMRLRX1","IMRLRX2","IMRLRX3","IMRNTEG","IMRPOST1","IMRPOST2","IMRPOSTI","IMRPRE1","IMRPREI","IMROPSUR","IMRCDC5" X ^%ZOSF("DEL")
|
---|
20 | Q
|
---|
21 | ;
|
---|
22 | DELDATA ; remove data from unused fields in File 158.9
|
---|
23 | ; add Domain file pointer to File 158.9
|
---|
24 | D BMES^XPDUTL("Deleting Unused Data...")
|
---|
25 | D DOMAIN ;get domain pointer value
|
---|
26 | S IMRIEN=0
|
---|
27 | F S IMRIEN=$O(^IMR(158.9,IMRIEN)) Q:'IMRIEN D
|
---|
28 | .S IMRNODE=$G(^IMR(158.9,IMRIEN,0)) Q:IMRNODE=""
|
---|
29 | .F IMRPIECE=2,3,4,8,11,12,13 S $P(IMRNODE,U,IMRPIECE)=""
|
---|
30 | .S ^IMR(158.9,IMRIEN,0)=IMRNODE
|
---|
31 | .I $G(IMRDOMN) S $P(^IMR(158.9,IMRIEN,"DOMAIN"),U,1)=IMRDOMN ;add domain pointer value to 158.9 entry
|
---|
32 | .S IMRIEN1=0
|
---|
33 | .F S IMRIEN1=$O(^IMR(158.9,IMRIEN,2,IMRIEN1)) Q:'IMRIEN1 D
|
---|
34 | ..S IMRIEN2=0
|
---|
35 | ..F S IMRIEN2=$O(^IMR(158.9,IMRIEN,2,IMRIEN1,1,IMRIEN2)) Q:'IMRIEN2 D
|
---|
36 | ...S $P(^IMR(158.9,IMRIEN,2,IMRIEN1,1,IMRIEN2,0),U,2)=""
|
---|
37 | ...Q
|
---|
38 | ..Q
|
---|
39 | .Q
|
---|
40 | K IMRIEN,IMRIEN1,IMRIEN2,IMRNODE,IMRPIECE
|
---|
41 | Q
|
---|
42 | ;
|
---|
43 | DELOPT ; remove old unused options
|
---|
44 | D BMES^XPDUTL("Removing Unused Options...")
|
---|
45 | F IMRX="IMRO REPORTS MENU","IMRO BY DX","IMRO BY NAME","IMRO DELETE","IMRO ENTER","IMRO MASTER","IMRO NO DX","IMRO TRANSMIT" D OPT
|
---|
46 | S IMRX="IMRO"
|
---|
47 | F S IMRX=$O(^DIC(19,"B",IMRX)) Q:$E(IMRX,1,4)'="IMRO" D OPT
|
---|
48 | K DA,DIK,IMRX
|
---|
49 | Q
|
---|
50 | ;
|
---|
51 | PROC ; Populate fields in File 158
|
---|
52 | D BMES^XPDUTL("Populating Data Fields in File 158...")
|
---|
53 | ; $P(^IMR(158,IMRX1,0),U,36)=DATE OF HIV+ (CAT 1) STATUS
|
---|
54 | ; " 42)=CATEGORY
|
---|
55 | ; " 44)=DATE OF HIV+ (CAT 2) STATUS
|
---|
56 | F IMRX1=0:0 S IMRX1=$O(^IMR(158,IMRX1)) Q:IMRX1<1 S IMRX=$G(^(IMRX1,0)),IMRDT=$P(IMRX,U,36),$P(IMRX,U,44)="",IMRCAT=$P(IMRX,U,42) S:IMRCAT=2 $P(IMRX,U,44)=$S(IMRDT:IMRDT,1:"") S ^IMR(158,IMRX1,0)=IMRX D P1,P2
|
---|
57 | K DA,DFN,I,IMRAAAD,IMRX,IMRX1,IMRDT,IMRCAT,IMRDFN,IMRDOB,IMRDOD,IMRSEX,VADM,X2
|
---|
58 | Q
|
---|
59 | ;
|
---|
60 | NLF ; populate new NLF ENTRY field in File 158.9
|
---|
61 | D BMES^XPDUTL("Populating new NLF ENTRY field in File 158.9...")
|
---|
62 | S IMRD2=0
|
---|
63 | F S IMRD2=$O(^IMR(158.9,IMRD2)) Q:'IMRD2 S IMRD1=0 F S IMRD1=$O(^IMR(158.9,IMRD2,3,IMRD1)) Q:'IMRD1 S IMRD0=0 F S IMRD0=$O(^IMR(158.9,IMRD2,3,IMRD1,1,IMRD0)) Q:'IMRD0 D
|
---|
64 | .S IMRLAB=+$G(^IMR(158.9,IMRD2,3,IMRD1,1,IMRD0,0)) Q:'IMRLAB
|
---|
65 | .S IMRWKLD=$$GET1^DIQ(60,IMRLAB,64,"I")
|
---|
66 | .S:IMRWKLD $P(^IMR(158.9,IMRD2,3,IMRD1,1,IMRD0,0),U,2)=IMRWKLD
|
---|
67 | .Q
|
---|
68 | K IMRD0,IMRD1,IMRD2,IMRLAB,IMRWKLD
|
---|
69 | Q
|
---|
70 | ;
|
---|
71 | DELFILE ; remove unused File 158.96
|
---|
72 | D BMES^XPDUTL("Removing unused File 158.96 dictionary and data...")
|
---|
73 | S DIU="^IMR(158.96,",DIU(0)="DS" D EN^DIU2
|
---|
74 | Q
|
---|
75 | ;
|
---|
76 | EXTRACT ; start data extract
|
---|
77 | D BMES^XPDUTL("Queuing the IMR REGISTRY DATA option to run immediately...")
|
---|
78 | S IMRSD=$P(^IMR(158.9,1,0),U,10)\1
|
---|
79 | S (IMRED,IMRDT)=$$NOW^XLFDT()
|
---|
80 | S $P(^IMR(158.9,1,0),U,9)=IMRED
|
---|
81 | S IMRC=0,IMRSET=0
|
---|
82 | D DQ^IMRDAT
|
---|
83 | K IMRC,IMRDT,IMRED,IMRSD,IMRSET
|
---|
84 | Q
|
---|
85 | ;
|
---|
86 | KILL ; Kill variables
|
---|
87 | K DIU,IMRC,IMRCAT,IMRDT,IMRED,IMRIEN,IMRIEN1,IMRIEN2,IMRNODE,IMRPIECE,IMRX,IMRX1,IMRX2,IMRX3,IMRRISK,IMRSD,IMRSET,IMRSEX,XC0,XC1,XC2,XC102,XC110,X
|
---|
88 | Q
|
---|
89 | ;
|
---|
90 | P1 ; Check/fix File 158 entries
|
---|
91 | S X=+IMRX D EN1^IMRXOR
|
---|
92 | Q:'$D(^DPT(X,0))
|
---|
93 | S (DFN,IMRDFN)=X D DEM^VADPT
|
---|
94 | S IMRDOD=$P(VADM(6),U,1),IMRSEX=$P(VADM(5),U,1),IMRDOB=$P(VADM(3),U,1)
|
---|
95 | S IMRX=$G(^IMR(158,IMRX1,5))
|
---|
96 | I $P(IMRX,U,19) S $P(IMRX,U,20)=0
|
---|
97 | I '$P(IMRX,U,19) S $P(IMRX,U,19)=$S(IMRDOD:IMRDOD,1:"") S $P(IMRX,U,20)=$S(IMRDOD:1,1:0) ;Populate IMR DATE OF DEATH
|
---|
98 | S ^IMR(158,IMRX1,5)=IMRX
|
---|
99 | D AAAD^IMRIPST1 K IMRAAAD,IMRNODE,X2
|
---|
100 | ;
|
---|
101 | RISK ; continue on and set IMR RISK
|
---|
102 | S DA=+IMRX1
|
---|
103 | D ^IMRRISK
|
---|
104 | Q
|
---|
105 | P2 ; remove data from fields that were deleted above
|
---|
106 | S $P(^IMR(158,IMRX1,102),U,3)=""
|
---|
107 | S $P(^IMR(158,IMRX1,102),U,4)=""
|
---|
108 | K ^IMR(158,IMRX1,106),^IMR(158,IMRX1,107)
|
---|
109 | Q
|
---|
110 | OPT S DA=$O(^DIC(19,"B",IMRX,"")) I DA S DIK="^DIC(19," D ^DIK
|
---|
111 | Q
|
---|
112 | RESCHED ; reschedule IMR REGISTRY DATA option in File 19.2
|
---|
113 | D BMES^XPDUTL("Rescheduling the IMR REGISTRY DATA option...")
|
---|
114 | K IMRAR
|
---|
115 | S IMRDA=$O(^DIC(19,"B","IMR REGISTRY DATA",0)) Q:'IMRDA
|
---|
116 | D FIND^DIC(19.2,"","2","Q",IMRDA,"","B","","","IMRAR")
|
---|
117 | S IMRLOOP=0
|
---|
118 | F S IMRLOOP=$O(IMRAR("DILIST",2,IMRLOOP)) Q:'IMRLOOP D
|
---|
119 | .S IMRIEN=+$G(IMRAR("DILIST",2,IMRLOOP)) Q:'IMRIEN
|
---|
120 | .S IMRDATE=$$GET1^DIQ(19.2,IMRIEN,2,"I")
|
---|
121 | .S IMRFREQ=$$GET1^DIQ(19.2,IMRIEN,6,"I")
|
---|
122 | .Q:IMRDATE<$$NOW^XLFDT ;quit if queued time is in past
|
---|
123 | .Q:IMRFREQ="" ;quit if no rescheduling frequency
|
---|
124 | .S IMRFREQ="1D" ;reschedule frequency=daily
|
---|
125 | .S IMRDATE=DT_"."_$P(IMRDATE,".",2)
|
---|
126 | .S IMRNDATE=$$FMADD^XLFDT(IMRDATE,1) ;reschedule for next day
|
---|
127 | .S IMR192(19.2,IMRIEN_",",2)=IMRNDATE
|
---|
128 | .S IMR192(19.2,IMRIEN_",",6)=IMRFREQ
|
---|
129 | .D FILE^DIE("K","IMR192","IMRERR")
|
---|
130 | .Q
|
---|
131 | K IMR192,IMRAR,IMRDA,IMRDATE,IMRFREQ,IMRIEN,IMRLOOP,IMRNDATE
|
---|
132 | Q
|
---|
133 | DOMAIN ; Get domain (#4.2) pointer value for IMMUNOLOGY.VA.GOV entry
|
---|
134 | D FIND^DIC(4.2,"","","X","IMMUNOLOGY.VA.GOV","","B","","","IMRIEN","IMRERR")
|
---|
135 | S IMRDOMN=+$G(IMRIEN("DILIST",2,1))
|
---|
136 | K IMRIEN,IMRERR
|
---|
137 | Q
|
---|
138 | DELIP ; Delete input templates
|
---|
139 | D BMES^XPDUTL("Deleting unused input templates...")
|
---|
140 | F IMRIP="IMR LPOINTER","IMR PPOINTER" D
|
---|
141 | .K DA,DIK,IMRIEN,IMRERR
|
---|
142 | .D FIND^DIC(.402,"","","X",IMRIP,"","B","","","IMRIEN","IMRERR")
|
---|
143 | .S DA=+$G(IMRIEN("DILIST",2,1))
|
---|
144 | .I DA>0 S DIK="^DIE(" D ^DIK
|
---|
145 | .Q
|
---|
146 | K DA,DIK,IMRIEN,IMRERR,IMRIP
|
---|
147 | Q
|
---|
148 | F15895 ; Add VIRAL LOAD entry to File 158.95
|
---|
149 | D BMES^XPDUTL("Adding VIRAL LOAD entry to File 158.95...")
|
---|
150 | S X="VIRAL LOAD"
|
---|
151 | I $D(^IMR(158.95,"B",X)) K X Q
|
---|
152 | K DD,DO
|
---|
153 | S DIC="^IMR(158.95,",DIC(0)="L"
|
---|
154 | D FILE^DICN
|
---|
155 | K DIC,DD,DO,X,Y
|
---|
156 | Q
|
---|