| [613] | 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 | 
|---|