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