| [613] | 1 | IMRBPT ; HCIOFO/FAI - DATA EXTRACTION ; 10/18/02 10:02am
 | 
|---|
 | 2 |  ;;2.1;IMMUNOLOGY CASE REGISTRY;**13,16,18,19**;Feb 09, 1998
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 |  ;***** DATA EXTRACTION FOR NEW PATIENT
 | 
|---|
 | 5 | ENTRY ;
 | 
|---|
 | 6 |  N IMRTRANS  S U="^"
 | 
|---|
 | 7 |  S IMRC=0                           ; Message line counter
 | 
|---|
 | 8 |  S IMRSET=0                         ; Message counter
 | 
|---|
 | 9 |  ;--- IMRED & IMRDT = Data extract end date/time
 | 
|---|
 | 10 |  S (IMRED,IMRDT)=$$NOW^XLFDT()
 | 
|---|
 | 11 |  ;--- Backpull from 01/01/1990 (instead of DT-365) for new patients
 | 
|---|
 | 12 |  S IMRSD=2900101 ; IMR*2.1*18
 | 
|---|
 | 13 | EN1 ;--- Entry point from post-init. The following variables must
 | 
|---|
 | 14 |  ;--- be defined: IMRSD,IMRED,IMRC,IMRSET,IMRDT.
 | 
|---|
 | 15 |  S IMRTRANS=1 ; Tell the system that this is a transmit to national
 | 
|---|
 | 16 |  D DOMAIN^IMRUTL                    ; Get the domain name for ICR
 | 
|---|
 | 17 |  S IMRDOMN="S.IMRHDATA@"_IMRDOMN    ; Append domain to server name
 | 
|---|
 | 18 |  S IMRDTT=DT,IMRM90=$$FMADD^XLFDT(DT,-90)
 | 
|---|
 | 19 |  K ^TMP($J)
 | 
|---|
 | 20 |  ;--- Get station number if it is not defined
 | 
|---|
 | 21 |  I '$D(IMRSTN) D IMROPN^IMRXOR  Q:'$D(IMRSTN)
 | 
|---|
 | 22 |  ;--- Create the message
 | 
|---|
 | 23 |  S X=10987654321  D XOR^IMRXOR  S IMRCODE=X
 | 
|---|
 | 24 |  D STARTSEG^IMRDAT1()
 | 
|---|
 | 25 |  ;--- Process patient's data
 | 
|---|
 | 26 |  S IMRSEND=0  D NXT,SEND^IMRDAT1(1)
 | 
|---|
 | 27 |  ;--- Cleanup
 | 
|---|
 | 28 | KIL K IMRDENT,IMRRAD,IMRRX,IMRLAB,IMRMI,IMRSCH,IMRCODE,IMRT1,IMRT2,IMRDFN,IMRFN,IMRED,IMRDT,IMR101,IMRNXT1,IMRNXT2,IMRSDV,IMRSET,IMRSTN,X,X1,X2,IMRC,IMRSSN,%DT,Y,%H,%,IMRTRANS
 | 
|---|
 | 29 |  K ^TMP($J),%T,DIC,IMRN,IMRSCH1,J,XCNP,XMZ,VAERR,D,DISYS,POP,IMRPAD,IMRADM,IMRDIS,IMRDOMN,IMRSEND,IMR5,IMRDTT,IMRL,IMRT,IMRTEST,IMRTRAN,IMRTSTI,IMRSD,IMRAD,IMRM90
 | 
|---|
 | 30 |  Q
 | 
|---|
 | 31 |  ;
 | 
|---|
 | 32 |  ;*****
 | 
|---|
 | 33 | NXT D CLEAR
 | 
|---|
 | 34 |  ;--- Node 101 contains last dates noted for various services provided
 | 
|---|
 | 35 |  S IMR101=$G(^IMR(158,IMRFN,101)),IMRI=+IMR101
 | 
|---|
 | 36 |  ;--- Node 5 is the date of death node
 | 
|---|
 | 37 |  S IMR5=$G(^IMR(158,IMRFN,5))
 | 
|---|
 | 38 |  ;--- Data transmitted for deceased (1:YES,0:NO)
 | 
|---|
 | 39 |  S IMRTRAN=$P(IMR5,U,21)  Q:IMRTRAN
 | 
|---|
 | 40 |  S IMRDOD=$P(IMR5,U,19) ; imr date of death
 | 
|---|
 | 41 |  ;--- IMRT1 is used to calculate the number of seconds needed
 | 
|---|
 | 42 |  ;--- to extract data for patient
 | 
|---|
 | 43 |  S IMRT1=$P($H,",",2)
 | 
|---|
 | 44 |  ;--- Decode patient id; quit if not in File 2
 | 
|---|
 | 45 |  S X=+^IMR(158,IMRFN,0)  D XOR^IMRXOR  Q:'$D(^DPT(X,0))
 | 
|---|
 | 46 |  S (DFN,IMRDFN)=X
 | 
|---|
 | 47 |  ;--- Piece #2 = LAST SCHEDULING DATE NOTED
 | 
|---|
 | 48 |  I $P(IMR101,U,2)=""  D
 | 
|---|
 | 49 |  . S IMRT2="NEW"  D DEMOG,CDC
 | 
|---|
 | 50 |  E  S IMRT2="UPD"  D DEMOG
 | 
|---|
 | 51 |  ;---
 | 
|---|
 | 52 |  I IMR101'=""  S IMRT1=$P($H,",",2)-IMRT1  D
 | 
|---|
 | 53 |  . S:IMRT1<0 IMRT1=IMRT1+(24*60*60)
 | 
|---|
 | 54 |  . S IMRC=IMRC+1,^TMP($J,"IMRX",IMRC)="TIME"_"^"_IMRT2_"^"_IMRT1
 | 
|---|
 | 55 |  Q
 | 
|---|
 | 56 |  ;
 | 
|---|
 | 57 | CDC ; Get Patient Data From File 158
 | 
|---|
 | 58 |  I $D(^IMR(158,IMRFN,1)),$P(^(1),"^",6)>0,$P(IMR101,"^",14)<$P(^(1),"^",6) S IMRLD=$P(^IMR(158,IMRFN,1),"^",6),$P(IMR101,"^",14)=IMRLD K IMRLD ;piece 6=date cdc form completed, piece 14=last cdc form date
 | 
|---|
 | 59 |  D MOVCDC0^IMRBPT1
 | 
|---|
 | 60 |  Q
 | 
|---|
 | 61 |  ;
 | 
|---|
 | 62 | DEMOG Q:'$D(^DPT(DFN,0))
 | 
|---|
 | 63 |  D SEGS^IMRDAT1(1,1,1,.VADM)
 | 
|---|
 | 64 |  ;--- Race (IMR*2.1*19)
 | 
|---|
 | 65 |  D:$G(VADM(12))>0
 | 
|---|
 | 66 |  . N I  S I=""
 | 
|---|
 | 67 |  . F  S I=$O(VADM(12,I))  Q:I=""  D  D LCHK^IMRDAT
 | 
|---|
 | 68 |  . . S IMRC=IMRC+1
 | 
|---|
 | 69 |  . . S ^TMP($J,"IMRX",IMRC)="DER^"_$P(VADM(12,I),U)_"^"_$P($G(VADM(12,I,1)),U)
 | 
|---|
 | 70 |  ;--- Ethnicity (IMR*2.1*19)
 | 
|---|
 | 71 |  D:$G(VADM(11))>0
 | 
|---|
 | 72 |  . N I  S I=""
 | 
|---|
 | 73 |  . F  S I=$O(VADM(11,I))  Q:I=""  D  D LCHK^IMRDAT
 | 
|---|
 | 74 |  . . S IMRC=IMRC+1
 | 
|---|
 | 75 |  . . S ^TMP($J,"IMRX",IMRC)="DEE^"_$P(VADM(11,I),U)_"^"_$P($G(VADM(11,I,1)),U)
 | 
|---|
 | 76 |  ;--- Cleanup
 | 
|---|
 | 77 |  K VADM  S IMRFLG=0
 | 
|---|
 | 78 |  ;--- Inpatient Data
 | 
|---|
 | 79 | IP S IMRLD=+$P(IMR101,"^",3),IMRLD1=+$P(IMR101,"^",4),IMRLD2=+$P(IMR101,"^",5) ;piece 3=LAST ADMIT DATE NOTED,piece 4=LAST DISCHARGE DATE NOTED,piece 5=LAST PTF ADMIT DATE NOTED
 | 
|---|
 | 80 |  D ^IMRPTF
 | 
|---|
 | 81 |  S $P(IMR101,"^",3,5)=$S(IMRADM>IMRLD:IMRADM,1:IMRLD)_"^"_$S(IMRDIS>IMRLD1:IMRDIS,1:IMRLD1)_"^"_$S(IMRPAD>IMRLD2:IMRPAD,1:IMRLD2)
 | 
|---|
 | 82 |  K IMRLD,IMRLD1,IMRLD2
 | 
|---|
 | 83 |  D GETDAT^IMRBPT1
 | 
|---|
 | 84 |  Q
 | 
|---|
 | 85 |  ;
 | 
|---|
 | 86 | CLEAR ; Kill Variables
 | 
|---|
 | 87 |  K IMRT1,IMRT2,DFN,IMRLD,IMRLD1,IMRLD2
 | 
|---|
 | 88 |  Q
 | 
|---|
 | 89 |  ;
 | 
|---|
 | 90 | DQ ; Queue Data Extract
 | 
|---|
 | 91 |  K ZTUCI,ZTDTH,ZTIO,ZTSAVE
 | 
|---|
 | 92 |  S ZTRTN="EN1^IMRBPT"
 | 
|---|
 | 93 |  S ZTSAVE("IMRSD")="",ZTSAVE("IMRED")="",ZTSAVE("IMRC")="",ZTSAVE("IMRSET")="",ZTSAVE("IMRDT")=""
 | 
|---|
 | 94 |  S ZTDTH=$$NOW^XLFDT()
 | 
|---|
 | 95 |  S ZTIO="",ZTDESC="Process Data Extract for a Date Range"
 | 
|---|
 | 96 |  D ^%ZTLOAD
 | 
|---|
 | 97 |  K ZTDESC,ZTDTH,ZTRTN,ZTSAVE,ZTIO,ZTSK
 | 
|---|
 | 98 |  Q
 | 
|---|