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