| 1 | IMRDAT1 ;HCIOFO-NCA,FT/FAI-DATA EXTRACTION (cont.) ; 01/14/02 14:23 ; 12/24/02 9:30am
 | 
|---|
| 2 |  ;;2.1;IMMUNOLOGY CASE REGISTRY;**1,9,5,14,13,16,15,18,19**;Feb 09, 1998
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  Q
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ;***** GETS ALL ANCILLARY PACKAGE DATA
 | 
|---|
| 7 | GETDAT ;
 | 
|---|
| 8 |  ;--- Get Outpatient Pharmacy Data
 | 
|---|
| 9 | RX D
 | 
|---|
| 10 |  . S IMRLD=+$P(IMR101,"^",6) ; LAST OPT PHARMACY DATE NOTED
 | 
|---|
| 11 |  . ;--- Perform the backpull if the start date is defined
 | 
|---|
| 12 |  . I $G(IMRSDBP(5.3))'>0  D
 | 
|---|
| 13 |  . . D:$D(IMRDTRX)>1 GET^IMRRX(IMRDTRX("S"),IMRDTRX("E"))
 | 
|---|
| 14 |  . . D GET^IMRRX(IMRSD,IMRED)
 | 
|---|
| 15 |  . E  D GET^IMRRX(IMRSDBP(5.3),IMRED)
 | 
|---|
| 16 |  . ;--- Check FILL DATE against LAST OPT PHARMACY DATE NOTED
 | 
|---|
| 17 |  . S IMRLD=$S(IMRRX>IMRLD:IMRRX,1:IMRLD)
 | 
|---|
| 18 |  . S:IMRLD'>0 IMRLD=""
 | 
|---|
| 19 |  . ; piece  6=LAST OPT PHARMACY DATE NOTED
 | 
|---|
| 20 |  . ; piece  7=LAST INPT PHARMACY DATE NOTED
 | 
|---|
| 21 |  . ; piece  8=LAST IV PHARMACY DATE NOTED,
 | 
|---|
| 22 |  . ; piece 12=LAST LIMITED Rx dATE
 | 
|---|
| 23 |  . S $P(IMR101,"^",6,8)=IMRLD_"^^",$P(IMR101,"^",12)=IMRLD
 | 
|---|
| 24 |  . K IMRLD
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 |  ;--- Get Lab Data
 | 
|---|
| 27 | LAB D
 | 
|---|
| 28 |  . S IMRLD=+$P(IMR101,"^",9)   ; LAST LABORATORY DATE NOTED
 | 
|---|
| 29 |  . S IMRLD1=+$P(IMR101,"^",10) ; LAST MICROBIOLOGY DATE NOTED
 | 
|---|
| 30 |  . ; Perform the backpull if the start date is defined
 | 
|---|
| 31 |  . I $G(IMRSDBP(5.1))>0  N IMRSD  S IMRSD=$G(IMRSDBP(5.1))
 | 
|---|
| 32 |  . D CHK^IMRLAB,^IMRBKLAB:'$G(IMRSDBP(5.1))
 | 
|---|
| 33 |  . S IMRLD=$S(IMRLAB>IMRLD:IMRLAB,1:IMRLD)
 | 
|---|
| 34 |  . S IMRLD1=$S(IMRMI>IMRLD1:IMRMI,1:IMRLD1)
 | 
|---|
| 35 |  . S:IMRLD'>0 IMRLD=""  S:IMRLD1'>0 IMRLD1=""
 | 
|---|
| 36 |  . S $P(IMR101,"^",9,10)=IMRLD_"^"_IMRLD1
 | 
|---|
| 37 |  . ; piece 13=last limited lab date, piece 17=last limited micro date
 | 
|---|
| 38 |  . S $P(IMR101,"^",13)=IMRLD,$P(IMR101,"^",17)=IMRLD1
 | 
|---|
| 39 |  . K IMRLD,IMRLD1
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 |  ;--- Get Radiology Data
 | 
|---|
| 42 | RAD ;
 | 
|---|
| 43 |  S IMRLD=+$P(IMR101,"^",11) D ^IMRRAD S:'IMRLD IMRLD="" ;LAST RADIOLOGY DATE NOTED
 | 
|---|
| 44 |  S $P(IMR101,"^",11)=$S(IMRRAD>IMRLD:IMRRAD,1:IMRLD) K IMRLD ;check latest EXAM DATE against last radiology date noted
 | 
|---|
| 45 |  ;
 | 
|---|
| 46 |  ;--- Get Dental Data
 | 
|---|
| 47 | DENT ;
 | 
|---|
| 48 |  S IMRLD=+$P(IMR101,"^",15) D DENT^IMRRAD S:'IMRLD IMRLD="" ;last dental appt date
 | 
|---|
| 49 |  S $P(IMR101,"^",15)=$S(IMRDENT>IMRLD:IMRDENT,1:IMRLD) K IMRLD
 | 
|---|
| 50 |  ;
 | 
|---|
| 51 |  ;--- Get Outpatient Activity Data
 | 
|---|
| 52 | OP ;
 | 
|---|
| 53 |  S IMRLD=+$P(IMR101,"^",16) D OP^IMRSCH S:'IMRLD IMRLD="" ;last OP date
 | 
|---|
| 54 |  S $P(IMR101,"^",16)=$S(IMROP>IMRLD:IMROP,1:IMRLD) K IMRLD ;check latest scheduling date/time against last OP date
 | 
|---|
| 55 |  ;
 | 
|---|
| 56 | WRAP S:IMRT2="NEW"!(IMRNXT2<IMRFN) IMRNXT2=IMRFN ;IMRNXT2=last new case
 | 
|---|
| 57 |  S ^IMR(158,IMRFN,101)=IMRDT_"^"_$P(IMR101,"^",2,99) ;IMRDT=LAST DATE DATA SURVEYED
 | 
|---|
| 58 |  Q
 | 
|---|
| 59 |  ;
 | 
|---|
| 60 |  ;***** SENDS A MESSAGE TO THE NATIONAL REGISTRY
 | 
|---|
| 61 | SEND(NEWPAT) ;
 | 
|---|
| 62 |  N IMRGI,TMP,XMDUZ,XMSUB,XMTEXT,XMY
 | 
|---|
| 63 |  ;--- Address message to coordinator if MAIL LIST flag is set to YES
 | 
|---|
| 64 |  S IMRGI=0
 | 
|---|
| 65 |  F  S IMRGI=$O(^IMR(158.9,1,1,IMRGI))  Q:IMRGI'>0  D
 | 
|---|
| 66 |  . S TMP=^IMR(158.9,1,1,IMRGI,0)
 | 
|---|
| 67 |  . S:$P(TMP,U,2)=1 XMY(+TMP)=""
 | 
|---|
| 68 |  ;--- Send the message
 | 
|---|
| 69 |  S XMTEXT="^TMP($J,""IMRX"","
 | 
|---|
| 70 |  S TMP=$E(IMRDTT,4,5)_"-"_$E(IMRDTT,6,7)_"-"_$E(IMRDTT,2,3)
 | 
|---|
| 71 |  S XMSUB="IMMUNOLOGY DATA. "_IMRSTN_" "_TMP_" ("_IMRSET_")"
 | 
|---|
| 72 |  S:$G(NEWPAT) XMSUB=XMSUB_"  *NEW PATIENT*"
 | 
|---|
| 73 |  S XMDUZ=.5,XMY(IMRDOMN)=""
 | 
|---|
| 74 |  D ^XMD
 | 
|---|
| 75 |  ;--- Create continuation message
 | 
|---|
| 76 |  K ^TMP($J)  S IMRFLAG=1
 | 
|---|
| 77 |  D STARTSEG(),SEGS(1)
 | 
|---|
| 78 |  Q
 | 
|---|
| 79 |  ;
 | 
|---|
| 80 | MOVCDC0 ; Send nodes File 158 nodes if CDC form was generated.
 | 
|---|
| 81 |  Q:'IMRSEND
 | 
|---|
| 82 |  D CDC0()
 | 
|---|
| 83 |  F IMRI=1,2,102,108:1:112 I $G(^IMR(158,IMRFN,IMRI))'="" S IMRC=IMRC+1,^TMP($J,"IMRX",IMRC)="CDC"_IMRI_"^"_^IMR(158,IMRFN,IMRI) D
 | 
|---|
| 84 |  .D LCHK^IMRDAT
 | 
|---|
| 85 |  .I IMRI=1 D
 | 
|---|
| 86 |  ..S IMRNODE1=$G(^TMP($J,"IMRX",IMRC))
 | 
|---|
| 87 |  ..S IMRSTATE=$P(IMRNODE1,U,13) ;state at onset of illness/aids
 | 
|---|
| 88 |  ..I IMRSTATE'="" S IMRSTATE=$$GET1^DIQ(5,IMRSTATE,1,"E") ;state abbr
 | 
|---|
| 89 |  ..S $P(IMRNODE1,U,13)=IMRSTATE
 | 
|---|
| 90 |  ..S IMRSTATE=$P(IMRNODE1,U,18) ;state of hospital - aids dx
 | 
|---|
| 91 |  ..I IMRSTATE'="" S IMRSTATE=$$GET1^DIQ(5,IMRSTATE,1,"E") ;state abbr
 | 
|---|
| 92 |  ..S $P(IMRNODE1,U,18)=IMRSTATE
 | 
|---|
| 93 |  ..S IMRSTATN=$P(IMRNODE1,U,8)
 | 
|---|
| 94 |  ..I IMRSTATN'="" S IMRSTATN=$$GET1^DIQ(4,IMRSTATN,99,"I") ;station #
 | 
|---|
| 95 |  ..S $P(IMRNODE1,U,8)=IMRSTATN
 | 
|---|
| 96 |  ..S $P(IMRNODE1,U,2)="*1*"
 | 
|---|
| 97 |  ..S IMRC=IMRC+1,^TMP($J,"IMRX",IMRC)=IMRNODE1
 | 
|---|
| 98 |  ..K IMRNODE1,IMRSTATE
 | 
|---|
| 99 |  ..Q
 | 
|---|
| 100 |  .Q
 | 
|---|
| 101 |  Q
 | 
|---|
| 102 |  ;
 | 
|---|
| 103 |  ;***** GENERATES THE CDC0 SEGMENT
 | 
|---|
| 104 | CDC0() ;
 | 
|---|
| 105 |  Q:$G(^IMR(158,IMRFN,0))=""
 | 
|---|
| 106 |  S IMRC=IMRC+1
 | 
|---|
| 107 |  S ^TMP($J,"IMRX",IMRC)="CDC0"_U_^IMR(158,IMRFN,0)
 | 
|---|
| 108 |  D LCHK^IMRDAT
 | 
|---|
| 109 |  Q
 | 
|---|
| 110 |  ;
 | 
|---|
| 111 |  ;***** PA & DE SEGMENTS
 | 
|---|
| 112 | SEGS(FPA,FDE,SIZECHK,VADM) ;
 | 
|---|
| 113 |  Q:$G(DFN)=""  Q:'$D(^DPT(DFN,0))
 | 
|---|
| 114 |  Q:'$D(^IMR(158,IMRFN,0))
 | 
|---|
| 115 |  N IMRDOB,IMRDOD,IMRELIG,IMRPOS,IMRSEPD,IMRSEX,IMRZIP,VA,VAEL,VAPA,VASV
 | 
|---|
| 116 |  D DEM^VADPT,ELIG^VADPT,SVC^VADPT,ADD^VADPT
 | 
|---|
| 117 |  ;--- Encrypt the patient SSN
 | 
|---|
| 118 |  S X=$P(VADM(2),U)  D XOR^IMRXOR  S IMRSSN=X
 | 
|---|
| 119 |  ;--- PA^Coded SSN
 | 
|---|
| 120 |  I $G(FPA)  D  D:$G(SIZECHK) LCHK^IMRDAT
 | 
|---|
| 121 |  . S IMRC=IMRC+1,^TMP($J,"IMRX",IMRC)="PA"_"^"_IMRSSN
 | 
|---|
| 122 |  ;--- Encrypt patient's date of birth
 | 
|---|
| 123 |  S X=$E($P(VADM(3),U),1,5)_"00"  D XOR^IMRXOR  S IMRDOB=X ;
 | 
|---|
| 124 |  ;--- Sex, ZIP code, and period of service (external value)
 | 
|---|
| 125 |  S IMRSEX=$P(VADM(5),U),IMRZIP=VAPA(6),IMRPOS=$P(VAEL(2),U,2)
 | 
|---|
| 126 |  ;--- Current primary eligibility & service separation date
 | 
|---|
| 127 |  S IMRELIG=$P(VAEL(1),U,2),IMRSEPD=$P(VASV(6,5),U)
 | 
|---|
| 128 |  ;--- Date of Death
 | 
|---|
| 129 |  S IMRDOD=$P(VADM(6),U)
 | 
|---|
| 130 |  I IMRDOD>0  D
 | 
|---|
| 131 |  . ;--- Save MAS DOD as IMR Date of Death, flag DOD as from MAS
 | 
|---|
| 132 |  . S $P(^IMR(158,IMRFN,5),U,19,20)=IMRDOD_U_1
 | 
|---|
| 133 |  . S $P(^IMR(158,IMRFN,1),U,34)=2
 | 
|---|
| 134 |  . ;--- Do not send the data after 60 days since DOD
 | 
|---|
| 135 |  . S:DT>$$FMADD^XLFDT(IMRDOD,60) $P(^IMR(158,IMRFN,5),U,21)=1
 | 
|---|
| 136 |  E  D
 | 
|---|
| 137 |  . S:$P(^IMR(158,IMRFN,1),U,34)=2 $P(^(1),U,34)=1
 | 
|---|
| 138 |  . S $P(^IMR(158,IMRFN,5),U,19,20)=U
 | 
|---|
| 139 |  ;--- DE^date of birth (encrypted)^sex^zip code^period of service
 | 
|---|
| 140 |  ;--- ^eligibility code^service separation date^^date of death
 | 
|---|
| 141 |  I $G(FDE)  D  D:$G(SIZECHK) LCHK^IMRDAT
 | 
|---|
| 142 |  . S IMRC=IMRC+1,^TMP($J,"IMRX",IMRC)="DE"_"^"_IMRDOB_"^"_IMRSEX_"^"_IMRZIP_"^"_IMRPOS_"^"_IMRELIG_"^"_IMRSEPD_"^^"_IMRDOD_"^"_DFN
 | 
|---|
| 143 |  S IMRFLG=0
 | 
|---|
| 144 |  Q
 | 
|---|
| 145 |  ;
 | 
|---|
| 146 |  ;***** START SEGMENT
 | 
|---|
| 147 | STARTSEG() ;
 | 
|---|
| 148 |  K ^TMP($J,"IMRX")
 | 
|---|
| 149 |  ;--- START^station number^date of data collection^message sequence
 | 
|---|
| 150 |  ;--- number^encryption code^IMR version number
 | 
|---|
| 151 |  S IMRC=IMRC+1,IMRSET=IMRSET+1
 | 
|---|
| 152 |  S ^TMP($J,"IMRX",IMRC)="START"_"^"_IMRSTN_"^"_IMRDT_"^"_IMRSET_"^"_IMRCODE_"^"_$$VERSION^XPDUTL("IMR")_"^19"
 | 
|---|
| 153 |  Q
 | 
|---|