| 1 | IMRPTF ; ISC-SF/JLI,HCIOFO/NCA,FT-EXTRACT PTF DATA FOR IMR REGISTRY DATABASE ; 7/5/02 1:54pm | 
|---|
| 2 | ;;2.1;IMMUNOLOGY CASE REGISTRY;**14,18**;Feb 09, 1998 | 
|---|
| 3 | ; Called from IMRDAT | 
|---|
| 4 | S (IMRADM,IMRDIS,IMRPAD,IMRPTX)=0 | 
|---|
| 5 | ; check PTF file (#45) - IMREC=TYPE OF RECORD (1:PTF,2:CENSUS) | 
|---|
| 6 | S IMRPTF=0 | 
|---|
| 7 | F  S IMRPTF=$O(^DGPT("B",IMRDFN,IMRPTF))  Q:IMRPTF'>0  D | 
|---|
| 8 | . D PTF^IMRUTL   Q:IMREC=2 | 
|---|
| 9 | . I IMRDD  Q:IMRDD<IMRM90 | 
|---|
| 10 | . S:'IMRPTX IMRPTX=IMRAD  D PTF | 
|---|
| 11 | K IMRBS,IMRDD,IMRM1,IMRM2,IMRMN,IMRPTF,IMRPTX,IMRFLG,IMRI,IMRN,IMRST,IMRDSP,IMRDISP,IMROUT,IMRX,IMRX1,IMRAR,IMREC,X,IMR3 | 
|---|
| 12 | Q | 
|---|
| 13 | PTF ; Process Data Extract for PTF | 
|---|
| 14 | Q:'IMRAD  ;quit if no admission date | 
|---|
| 15 | I IMRDD,IMRDD<IMRAD Q  ;quit if discharge date before admission date | 
|---|
| 16 | Q:IMRAD>IMRED  ;quit if admission date after end date | 
|---|
| 17 | ;--- Double check admission date. If not valid, set IMRFLG=1; | 
|---|
| 18 | ;--- pass back discharge date if it exists | 
|---|
| 19 | I 'IMRDD  S IMRFLG=0  D  Q:IMRFLG | 
|---|
| 20 | . D DBCHK^IMRLCNT(IMRDFN,IMRAD,.IMRDD,.IMRFLG) | 
|---|
| 21 | ;--- Send the admission IP segment once and wait for discharge | 
|---|
| 22 | I 'IMRDD  Q:IMRAD<IMRSD | 
|---|
| 23 | ;--- InPatient episode | 
|---|
| 24 | S IMRX="IP"_"^"_$S(IMRAD>0:IMRAD\1,1:"")_"^" | 
|---|
| 25 | I IMRAD>IMRADM S IMRADM=IMRAD I IMRDD'>0 S IMRC=IMRC+1,^TMP($J,"IMRX",IMRC)=IMRX S IMRSEND=1 K IMRX Q | 
|---|
| 26 | Q:IMRDD'>0 | 
|---|
| 27 | S:IMRDD>IMRDIS IMRDIS=IMRDD | 
|---|
| 28 | S IMRX=IMRX_(IMRDD\1)_"^"_IMRDSP_"^"_IMRDISP_"^"_IMROUT_"^" ;IMRDD=discharge date, IMRDSP=discharge specialty, IMRDISP=type of disposition, IMROUT=outpatient treatment | 
|---|
| 29 | D ICDP^IMRUTL S (IMRI,IMRX1)="" ;get ICD codes (in IMRAR array) | 
|---|
| 30 | G:'$D(IMRAR(45)) PTF1 | 
|---|
| 31 | ; concatenate ICD codes | 
|---|
| 32 | S IMRI=$O(IMRAR(45,IMRI)) | 
|---|
| 33 | I IMRI'="" F IMRN=0:0 S IMRN=$O(IMRAR(45,IMRI,IMRN)) Q:IMRN<1  S X=$G(IMRAR(45,IMRI,IMRN,"E")) S IMRX1=IMRX1_X_"^" | 
|---|
| 34 | S:IMRX1'="" IMRX1=$E(IMRX1,1,$L(IMRX1)-1) ;omit last up-arrow | 
|---|
| 35 | PTF1 S IMRX=IMRX_IMRX1 | 
|---|
| 36 | S IMRC=IMRC+1,^TMP($J,"IMRX",IMRC)=IMRX S IMRSEND=1 K IMRX | 
|---|
| 37 | ; IMRST=status, IMRPTX=admission date | 
|---|
| 38 | I IMRST>1&(IMRPTX=IMRAD) D PTFM S:IMRAD>IMRPAD IMRPAD=IMRAD S IMRPTX=0 | 
|---|
| 39 | Q | 
|---|
| 40 | PTFM ; IPM segment | 
|---|
| 41 | D ICDM^IMRUTL G:'$D(IMRAR(45.02)) PTFS ;get movement data | 
|---|
| 42 | D REORDER^IMRUTL | 
|---|
| 43 | S IMRM2=IMRAD\1,IMR3=0 | 
|---|
| 44 | F  S IMR3=$O(IMR4502(IMR3)) Q:'IMR3  S IMRI="" F  S IMRI=$O(IMRAR(45.02,IMRI)) Q:IMRI=""  I $G(IMRAR(45.02,IMRI,10,"I"))=IMR3 D | 
|---|
| 45 | .S (IMRX,IMRX1)="",IMRM1=IMRM2 | 
|---|
| 46 | .S IMRBS=$G(IMRAR(45.02,IMRI,2,"E")) ;losing specialty | 
|---|
| 47 | .F IMRN=5:1:9,11:1:15 S X=$G(IMRAR(45.02,IMRI,IMRN,"E")) S IMRX1=IMRX1_X_"^" ;concatenate ICD codes | 
|---|
| 48 | .S:IMRX1'="" IMRX1=$E(IMRX1,1,$L(IMRX1)-1) ;omit last up-arrow | 
|---|
| 49 | .S IMRM2=$G(IMRAR(45.02,IMRI,10,"I")) ;movement date | 
|---|
| 50 | .S IMRX=IMRX_"^"_IMRX1 | 
|---|
| 51 | .S IMRBS=$S(IMRBS="":$$TREAT^IMRLCNT(IMRDFN),1:IMRBS) ;treatment specialty (external value) | 
|---|
| 52 | .S IMRC=IMRC+1,^TMP($J,"IMRX",IMRC)="IPM"_"^"_(IMRM1\1)_"^"_(IMRM2\1)_"^"_IMRBS_IMRX_"^"_(IMRAD\1) S IMRSEND=1 K IMRX,IMRX1 ;IMRAD=admission date,IMRM1=begin movement,IMRM2=end movement,IMRBS=losing specialty | 
|---|
| 53 | .Q | 
|---|
| 54 | PTFS ; Obtain Surgery/Procedure Operation Codes (#401) | 
|---|
| 55 | D SPROC^IMRUTL G:'$D(IMRAR(45.01)) PTFP S IMRI="" | 
|---|
| 56 | F  S IMRI=$O(IMRAR(45.01,IMRI)) Q:IMRI=""  D | 
|---|
| 57 | .S (IMRX,IMRX1)="" | 
|---|
| 58 | .S IMRX=($G(IMRAR(45.01,IMRI,.01,"I"))\1) ;surgery/procedure date | 
|---|
| 59 | .F IMRN=8:1:12 S X=$G(IMRAR(45.01,IMRI,IMRN,"E")) S IMRX1=IMRX1_X_"^" ;concatenate operation codes 1-5 | 
|---|
| 60 | .Q:IMRX1="" | 
|---|
| 61 | .S:IMRX1'="" IMRX1=$E(IMRX1,1,$L(IMRX1)-1) ;omit last up-arrow | 
|---|
| 62 | .S IMRX=IMRX_"^"_IMRX1 | 
|---|
| 63 | .S IMRC=IMRC+1,^TMP($J,"IMRX",IMRC)="IPS"_"^"_(IMRAD\1)_"^"_IMRX K IMRX,IMRX1 S IMRSEND=1 ;IMRAD=admission date | 
|---|
| 64 | .Q | 
|---|
| 65 | PTFP ; Obtain Procedure Codes (#601) | 
|---|
| 66 | D PROC^IMRUTL Q:'$D(IMRAR(45.05))  S IMRI="" | 
|---|
| 67 | F  S IMRI=$O(IMRAR(45.05,IMRI)) Q:IMRI=""  D | 
|---|
| 68 | .S (IMRX,IMRX1)="" | 
|---|
| 69 | .S IMRX=($G(IMRAR(45.05,IMRI,.01,"I"))\1) ;procedure date | 
|---|
| 70 | .S IMRX=IMRX_"^"_$G(IMRAR(45.05,IMRI,1,"E")) | 
|---|
| 71 | .F IMRN=4:1:8 S X=$G(IMRAR(45.05,IMRI,IMRN,"E")) S IMRX1=IMRX1_X_"^" ;concatenate procedure codes 1-5 | 
|---|
| 72 | .Q:IMRX1="" | 
|---|
| 73 | .S:IMRX1'="" IMRX1=$E(IMRX1,1,$L(IMRX1)-1) ;omit last up-arrow | 
|---|
| 74 | .S IMRX=IMRX_"^"_IMRX1 | 
|---|
| 75 | .S IMRC=IMRC+1,^TMP($J,"IMRX",IMRC)="IPP"_"^"_(IMRAD\1)_"^"_IMRX S IMRSEND=1 ;IMRAD=admission date | 
|---|
| 76 | .K IMRX,IMRX1 | 
|---|
| 77 | .Q | 
|---|
| 78 | Q | 
|---|