| 1 | IMRSUDOP ;ISC-SF/JLI,HCIOFO/FT/FAI/SPS-LOCAL COUNT OF PTS, STATUS, OP VISITS, IP STAYS, ETC. ;07/23/01  07:28 | 
|---|
| 2 | ;;2.1;IMMUNOLOGY CASE REGISTRY;**5,13**;Feb 09, 1998 | 
|---|
| 3 | DQ ; | 
|---|
| 4 | U IO K ^TMP($J) S X1=IMRED,X2=1 D C^%DTC S IMREDP1=X | 
|---|
| 5 | F IMRL=0:0 S IMRL=$O(^IMR(158,IMRL)) Q:IMRL'>0  S X=+^(IMRL,0),IMR1C=+$P(^(0),U,42) D XOR^IMRXOR S IMRDFN=X I $D(^DPT(IMRDFN,0)) S DFN=IMRDFN D NS^IMRCALL K DFN F IMR0C=IMR1C,"T" I IMR2C!(IMR0C="T") S IMR1C="C"_IMR0C D C1 | 
|---|
| 6 | K VADM,VA | 
|---|
| 7 | D ^IMRLCNT1,^IMRLCNT2 | 
|---|
| 8 | KILL Q | 
|---|
| 9 | Q | 
|---|
| 10 | C1 S IMRSDV=0,IMRSDVA=1,DFN=IMRDFN D DEM^VADPT | 
|---|
| 11 | S IMRDTH=$P($G(VADM(6)),"^",1) | 
|---|
| 12 | I IMRDTH,IMRDTH<IMRSD Q  ;quit if dead before start date of report | 
|---|
| 13 | I +$$VERSION^XPDUTL("SD")>5.3 S IMRSDV=1 D ACRP G DGPT ;get data from File 409.68 | 
|---|
| 14 | I +$$PATCH^XPDUTL("SD*5.3*131")>0 S IMRSDV=1 D ACRP G DGPT ;get data from File 409.68 | 
|---|
| 15 | S VASD("F")=IMRSD,VASD("T")=IMRED D SDA^VADPT K DFN,VASD | 
|---|
| 16 | F IMRDY=0:0 S IMRDY=$O(^UTILITY("VASD",$J,IMRDY)) Q:IMRDY'>0  S IMRD=+^(IMRDY,"I"),IMRCS=$P(^("I"),U,2) D C2 | 
|---|
| 17 | K ^UTILITY("VASD",$J) | 
|---|
| 18 | S IMRSDV=1 | 
|---|
| 19 | F IMRD=IMRSD-.0000001:0 S IMRD=$O(^SDV("C",IMRDFN,IMRD)) Q:IMRD'>0!(IMRD'<(IMRED+1))  S IMRSDVA=$S('$D(^TMP($J,IMR1C,"PAT",IMRDFN,"S",(IMRD\1))):1,1:0) S IMRSDVI=IMRD D SDVCS^IMRUTL I $D(IMRAR(409.51)) D | 
|---|
| 20 | .S J="" F  S J=$O(IMRAR(409.51,J)) Q:J=""  S IMRCS=$G(IMRAR(409.51,J,.01,"I")) D C2 | 
|---|
| 21 | .Q | 
|---|
| 22 | DGPT K IMRAR,IMRSDVI | 
|---|
| 23 | F IMRI=0:0 S IMRI=$O(^DGPT("B",IMRDFN,IMRI)) Q:IMRI'>0  I $D(^DGPT(IMRI,0)),+^(0)=IMRDFN S IMRPTF=IMRI D PTF^IMRUTL D | 
|---|
| 24 | .S IMRDD=$S(+IMRDD'>0:0,1:+IMRDD) | 
|---|
| 25 | .Q:'IMRAD | 
|---|
| 26 | .S IMRFLG=0 | 
|---|
| 27 | .I 'IMRDD D DBCHK(IMRDFN,IMRAD,.IMRDD,.IMRFLG) | 
|---|
| 28 | .Q:IMRFLG | 
|---|
| 29 | .I (IMRDD=0&(IMRAD'>IMRED))!((IMRDD'<IMRSD)&(IMRAD'>IMRED)) D C3 | 
|---|
| 30 | .Q | 
|---|
| 31 | Q | 
|---|
| 32 | C2 ; | 
|---|
| 33 | S:'IMRSDV IMRCS=+$$ARSC^IMRUTL(+IMRCS) ;get ptr value to File 40.7 | 
|---|
| 34 | S IMRCS=$S($D(^DIC(40.7,IMRCS,0)):$P(^(0),U,2),1:"NO SC ID") | 
|---|
| 35 | S:IMRCS="" IMRCS=$P(^DIC(40.7,IMRCS,0),U) | 
|---|
| 36 | I IMRCS="NO SC ID" S ^TMP($J,IMR1C,"NO SC",IMRDFN,IMRD,IMRSDV)="" | 
|---|
| 37 | S ^("OP")=$S($D(^TMP($J,IMR1C,"PAT",IMRDFN,"OP")):^("OP"),1:0)+1,^(IMRCS)=$S($D(^("OP",IMRCS)):^(IMRCS),1:0)+1 | 
|---|
| 38 | S IMRDX=IMRD\1 | 
|---|
| 39 | I '$D(^TMP($J,IMR1C,"PAT",IMRDFN,"S",IMRDX,IMRCS)) S ^(IMRCS)=$S(IMRSDV:"SDV",1:""),^(IMRDX)=$S(($D(^TMP($J,IMR1C,"PAT",IMRDFN,"S",IMRDX))#2):^(IMRDX),1:0)+1 | 
|---|
| 40 | Q | 
|---|
| 41 | C3 ; | 
|---|
| 42 | I '$D(IMRSUF)!('$D(IMREC)) S IMRPTF=IMRI D PTF^IMRUTL | 
|---|
| 43 | I IMRSUF'="",'(IMRSUF="9AA"!(IMRSUF="A0")!(IMRSUF="9AB")!(IMRSUF="9AD")!(IMRSUF="9AC")!(IMRSUF="9AE")!(IMRSUF="9BB")!(IMRSUF="A4")!(IMRSUF="A5")!(IMRSUF="BU")!(IMRSUF="BV")!(IMRSUF="PA")) Q | 
|---|
| 44 | Q:+IMREC>1  ; IGNORE CENSUS PTF ENTRIES | 
|---|
| 45 | S IMRAD1=IMRAD,IMRAD=$S(IMRAD'<IMRSD:IMRAD,1:IMRSD),IMRDD=$S(IMRDD=0:IMREDP1,(IMRDD\1)'>IMRED:IMRDD,1:IMREDP1) | 
|---|
| 46 | S ^("IP")=$S($D(^TMP($J,IMR1C,"PAT",IMRDFN,"IP")):^("IP"),1:0)+1,X1=IMRDD\1,X2=IMRAD\1 | 
|---|
| 47 | D ^%DTC S:X=0 X=1 S IMRDAYS=X,^("DAYS")=$S($D(^TMP($J,IMR1C,"PAT",IMRDFN,"IP","DAYS")):^("DAYS"),1:0)+IMRDAYS,^(IMRDAYS)=$S($D(^(IMRDAYS)):^(IMRDAYS),1:0)+1 | 
|---|
| 48 | S IMRD1=IMRAD\1,K=0 S IMRAD1=IMRAD1\1 | 
|---|
| 49 | S IMRPTF=IMRI D ICDM^IMRUTL,REORDER^IMRUTL K IMRAR | 
|---|
| 50 | I $D(IMR4502) F K=IMRAD1:0 S K=$O(IMR4502(K)) Q:K'<IMRAD!(K="")  S IMRAD1=K\1 | 
|---|
| 51 | S K=0,IMRROU="C4^IMRLCNT1" | 
|---|
| 52 | F IMRJ=IMRD1:0 S IMRJ=$O(IMR4502(IMRJ)) Q:IMRJ'>0!(IMRJ'<(IMRDD\1))  D | 
|---|
| 53 | .D C31,^%DTC S IMRDAYS=X | 
|---|
| 54 | .S IMRBS=$P(IMR4502(IMRJ),U,1) ;treating specialty (external) File 45 | 
|---|
| 55 | .S IMRBSO=$$TREAT(IMRDFN) ;treating specialty (external) File 2 | 
|---|
| 56 | .S IMRBS=$S(IMRBS]"":IMRBS,1:IMRBSO) | 
|---|
| 57 | .S:IMRBS="" IMRBS="NO ID" | 
|---|
| 58 | .D @IMRROU S IMRD1=IMRJ\1 | 
|---|
| 59 | .Q | 
|---|
| 60 | K IMRROU S X2=IMRD1,X1=IMRDD\1 D ^%DTC S:X=0 X=1 S IMRDAYS=X,IMRBS=$S($D(IMRFIRST):$P(IMRFIRST,U,1),1:0) D | 
|---|
| 61 | .S IMRBSO=$$TREAT(IMRDFN) | 
|---|
| 62 | .S IMRBS=$S(IMRBS]"":IMRBS,1:IMRBSO) | 
|---|
| 63 | .S:IMRBS="" IMRBS="NO ID" | 
|---|
| 64 | .D C4^IMRLCNT1 | 
|---|
| 65 | .Q | 
|---|
| 66 | K IMR4502,IMRFIRST | 
|---|
| 67 | Q | 
|---|
| 68 | C31 S X1=IMRJ\1,X2=IMRD1 | 
|---|
| 69 | Q | 
|---|
| 70 | DBCHK(DFN,IMRAD,IMRDD,IMRFLG) ; Double Check if Admission date is valid and | 
|---|
| 71 | ;                         if there is a discharge date or not.  If | 
|---|
| 72 | ;                         Admission date is not valid set IMRFLG=1 | 
|---|
| 73 | ;                         if Discharge date exist pass it back. | 
|---|
| 74 | N IMRX | 
|---|
| 75 | S VAINDT=IMRAD D ADM^VADPT2 K VAINDT I 'VADMVT K VADMVT S IMRFLG=1 Q | 
|---|
| 76 | S IMRX=$$GET1^DIQ(405,VADMVT,.17,"I") K VADMVT Q:'IMRX | 
|---|
| 77 | S IMRDD=$$GET1^DIQ(405,IMRX,.01,"I") | 
|---|
| 78 | Q | 
|---|
| 79 | TREAT(DFN) ; Retrieve the patient's Treatment Specialty | 
|---|
| 80 | S Y=$$GET1^DIQ(2,DFN,.103,"") | 
|---|
| 81 | Q Y | 
|---|
| 82 | ACRP ; Ambulatory Care Reporting Changes | 
|---|
| 83 | ; If site has SD*5.3*131 installed, then use the ACRP APIs to get | 
|---|
| 84 | ; the stop code data. | 
|---|
| 85 | N QUERY | 
|---|
| 86 | D OPEN^SDQ(.QUERY) | 
|---|
| 87 | D INDEX^SDQ(.QUERY,"PATIENT/DATE","SET") | 
|---|
| 88 | D PAT^SDQ(.QUERY,IMRDFN,"SET") | 
|---|
| 89 | D DATE^SDQ(.QUERY,IMRSD,IMREDP1,"SET") | 
|---|
| 90 | D SCANCB^SDQ(.QUERY,"D SCAN^IMRLCNT(Y,Y0)","SET") | 
|---|
| 91 | D ACTIVE^SDQ(.QUERY,"TRUE","SET") | 
|---|
| 92 | D SCAN^SDQ(.QUERY,"FORWARD") | 
|---|
| 93 | D CLOSE^SDQ(.QUERY) | 
|---|
| 94 | Q | 
|---|
| 95 | SCAN(Y,Y0) ; Scan records returned by ACRP API | 
|---|
| 96 | ; data comes from the Outpatient Encounter file (409.68) | 
|---|
| 97 | S IMRD=+Y0 ;get visit/admit date/time | 
|---|
| 98 | S IMRCS=$P(Y0,U,3) ;dds id, pointer to File 40.7 (Clinic Stop) | 
|---|
| 99 | D C2 | 
|---|
| 100 | Q | 
|---|