[613] | 1 | ECXPIVDN ;ALB/JAP,BIR/DMA,CML,PTD-Extract from IV EXTRACT DATA File (#728.113) ; 10/31/07 1:38pm
|
---|
| 2 | ;;3.0;DSS EXTRACTS;**10,11,8,13,24,33,39,46,49,71,84,96,92,107,105**;Dec 22, 1997;Build 70
|
---|
| 3 | BEG ;entry point from option
|
---|
| 4 | D SETUP I ECFILE="" Q
|
---|
| 5 | D ^ECXTRAC,^ECXKILL
|
---|
| 6 | Q
|
---|
| 7 | ;
|
---|
| 8 | START ; start package specific extract
|
---|
| 9 | N DIC,DA,DR,DIQ,DFN,ECXNPRFI,ECXPHA
|
---|
| 10 | S QFLG=0
|
---|
| 11 | I '$D(ECINST) D
|
---|
| 12 | .S ECINST=+$P(^ECX(728,1,0),U) K ECXDIC S DA=ECINST,DIC="^DIC(4,",DIQ(0)="I",DIQ="ECXDIC",DR=".01;99"
|
---|
| 13 | .D EN^DIQ1 S ECINST=$G(ECXDIC(4,DA,99,"I")) K DIC,DIQ,DA,DR,ECXDIC
|
---|
| 14 | S ECED=ECED+.3
|
---|
| 15 | K ^TMP($J,"A"),^TMP($J,"S")
|
---|
| 16 | S ECD=ECSD1
|
---|
| 17 | F S ECD=$O(^ECX(728.113,"A",ECD)),DFN=0 Q:'ECD Q:ECD>ECED Q:QFLG F S DFN=$O(^ECX(728.113,"A",ECD,DFN)),ON=0 Q:'DFN F S ON=$O(^ECX(728.113,"A",ECD,DFN,ON)),DA=0 Q:'ON K ^TMP($J,"A"),^TMP($J,"S") S ECVOL=0 D Q:QFLG
|
---|
| 18 | .S ECXERR=0 D PAT(DFN,ECD,.ECXERR)
|
---|
| 19 | .Q:ECXERR
|
---|
| 20 | .F S DA=$O(^ECX(728.113,"A",ECD,DFN,ON,DA)) Q:'DA Q:QFLG I $D(^ECX(728.113,DA,0)) S EC=^(0) D Q:QFLG
|
---|
| 21 | ..S DRG=$P(EC,U,4) I $P(EC,U,8)]"" D
|
---|
| 22 | ...I '$D(^TMP($J,"A",DRG)) S ^(DRG)=$P(EC,U,7,8),^(DRG,1)=0,^(2)=$P(EC,U,12)
|
---|
| 23 | ...S ^(1)=^TMP($J,"A",DRG,1)+$S($P(EC,U,6)=1:1,$P(EC,U,6)=4:0,1:-1)
|
---|
| 24 | ..I $P(EC,U,9) D
|
---|
| 25 | ...I '$D(^TMP($J,"S",DRG)) S ^(DRG)=$P(EC,U,9)_"^ML",^(DRG,1)=0,^(2)=$P(EC,U,12),ECVOL=$P(EC,U,9)+ECVOL
|
---|
| 26 | ...S ^(1)=^TMP($J,"S",DRG,1)+$S($P(EC,U,6)=1:1,$P(EC,U,6)=4:0,1:-1)
|
---|
| 27 | ..S ECTYP=$P(EC,U,11),ECTOTC=0,ECDTTM=$$ECXTIME^ECXUTL($P(EC,U,5))
|
---|
| 28 | .;looped thru all DAs for this order - now put it together
|
---|
| 29 | .;leave the next line in case the decision is made to send volume designations
|
---|
| 30 | .;I ECTYP="H" S ECTYP=ECTYP_$S(ECVOL'>1000:1,ECVOL'>2000:2,1:3)
|
---|
| 31 | .S ECXDSSI=""
|
---|
| 32 | .;loop thru tmp global and call pharmacy drug file (#50) api
|
---|
| 33 | .F SA="S","A" S DRG="" F S DRG=$O(^TMP($J,SA,DRG)) Q:DRG="" S ECXPHA="",ECXPHA=$$PHAAPI^ECXUTL5(DRG) I $P(ECXPHA,U)'="" D STUFF Q:QFLG
|
---|
| 34 | K ^TMP($J),CLIN,DA,DFN,DIC,DIK,DRG,ON,SA,X,Y,P1,P3
|
---|
| 35 | Q
|
---|
| 36 | STUFF ;get data
|
---|
| 37 | N ECORDST
|
---|
| 38 | S ECST=^TMP($J,SA,DRG),ECXCNT=^(DRG,1),ECXCOST=^(2),ECXCOST=ECXCOST*ECXCNT,ECVACL=$P(ECXPHA,U,2),ECORDST=""
|
---|
| 39 | ;if outpatient get division from iv rm; get dss identifier for clinic
|
---|
| 40 | I ECXA="O" D
|
---|
| 41 | .;- Only set ward to .5 if outpatient (but NOT observation patient)
|
---|
| 42 | .I $G(ECXW)="" S ECXW=.5
|
---|
| 43 | .I $P(EC,U,15) S ECIVRM=$P(EC,U,15),ECXDIV=$$PSJ59P5^ECXUTL5(ECIVRM)
|
---|
| 44 | .S CLIN=+$P(EC,U,13),(ECXP1,ECXP2)="000",ECXCL=$G(^ECX(728.44,CLIN,0)) Q:ECXCL=""
|
---|
| 45 | .S ECSC=$P(ECXCL,U,4),ECCSC=$P(ECXCL,U,5)
|
---|
| 46 | .I ECSC="" S ECSC=$P(ECXCL,U,2),ECCSC=$P(ECXCL,U,3)
|
---|
| 47 | .I ECSC S ECXP1=$$RJ^XLFSTR(ECSC,3,0),ECXP2=$$RJ^XLFSTR(ECCSC,3,0)
|
---|
| 48 | .I ECSC="" S ECSC=$P($G(^SC(ECXCL,0)),U,7),ECCSC=$P($G(^SC(ECXCL,0)),U,18) I ECSC D
|
---|
| 49 | ..S ECXP1=$P($G(^DIC(40.7,ECSC,0)),U,2) S:ECCSC]"" ECXP2=$P($G(^DIC(40.7,ECCSC,0)),U,2)
|
---|
| 50 | ..S ECXP1=$$RJ^XLFSTR(ECXP1,3,0),ECXP2=$$RJ^XLFSTR(ECXP2,3,0)
|
---|
| 51 | .S ECXDSSI=ECXP1_ECXP2
|
---|
| 52 | .I ECXLOGIC>2003 D
|
---|
| 53 | ..I "^18^23^24^36^41^65^94^"[("^"_ECXTS_"^") S ECXDSSI=$$TSMAP^ECXUTL4(ECXTS)
|
---|
| 54 | S ECINV=$P(ECXPHA,U,4),ECINV=$S(ECINV["I":"I",1:""),ECST=ECXCNT*ECST_" "_$P(ECST,U,2)
|
---|
| 55 | S ECNDC=$P(ECXPHA,U,3),ECNFC=$$RJ^XLFSTR($P(ECNDC,"-"),6,0)_$$RJ^XLFSTR($P(ECNDC,"-",2),4,0)_$$RJ^XLFSTR($P(ECNDC,"-",3),2,0),ECNFC=$TR(ECNFC,"*",0)
|
---|
| 56 | S P1=$P(ECXPHA,U,5),P3=$P(ECXPHA,U,6)
|
---|
| 57 | S X="PSNAPIS" X ^%ZOSF("TEST") I $T S ECNFC=$$DSS^PSNAPIS(P1,P3,ECXYM)_ECNFC
|
---|
| 58 | I $L(ECNFC)=12 S ECNFC=$$RJ^XLFSTR(P1,4,0)_$$RJ^XLFSTR(P3,3,0)_ECNFC
|
---|
| 59 | ;- Ordering provider ("2"_provider)
|
---|
| 60 | S ECXORDPR=$S(+$P(EC,U,10):"2"_$P(EC,U,10),1:"")
|
---|
| 61 | N ECXUSRTN
|
---|
| 62 | S ECXUSRTN=$$NPI^XUSNPI("Individual_ID",$P(EC,U,10),$P(EC,U,16))
|
---|
| 63 | S:+ECXUSRTN'>0 ECXUSRTN="" S ECXOPNPI=$P(ECXUSRTN,U)
|
---|
| 64 | S ECXORDDT=$P(EC,U,16) ;- Ordering date
|
---|
| 65 | ;- Requesting physician (null for FY2002)
|
---|
| 66 | S ECXRPHY=""
|
---|
| 67 | ;- Department and National Prod Division
|
---|
| 68 | S ECXDSSD="" ;dss department use postponed $$IVP^ECXDEPT(ECXDIV)
|
---|
| 69 | N ECXPDIV S ECXPDIV=$$GETDIV^ECXDEPT(ECXDIV)
|
---|
| 70 | ;- Observation patient indicator (yes/no)
|
---|
| 71 | S ECXOBS=$$OBSPAT^ECXUTL4(ECXA,ECXTS,ECXDSSI)
|
---|
| 72 | ; - Ordering Date, Ordering Stop Code
|
---|
| 73 | S ECXORDST="" I ECXA="O" D
|
---|
| 74 | .S ECXORDST=$$DOIVPO^ECXUTL5(DFN,ON)
|
---|
| 75 | .I ECXOBS="NO" S ECORDST="160"
|
---|
| 76 | .I ECXOBS="YES" S ECORDST=$P($G(^ECX(727.831,+ECXTS,0)),U,6)
|
---|
| 77 | ;- If no encounter number don't file record
|
---|
| 78 | S ECXENC=$$ENCNUM^ECXUTL4(ECXA,ECXSSN,ECXADM,ECD,ECXTS,ECXOBS,ECHEAD,ECORDST,)
|
---|
| 79 | ;get BCMA data
|
---|
| 80 | S (ECXBCDD,ECXBCDG,ECXBCUA,ECXBCIF)=""
|
---|
| 81 | ;get ordering provider person class
|
---|
| 82 | S ECXOPPC=$$PRVCLASS^ECXUTL($E(ECXORDPR,2,999),ECXORDDT)
|
---|
| 83 | ;set national patient record flag if exist
|
---|
| 84 | S ECXDFN=DFN D NPRF^ECXUTL5 K ECXDFN
|
---|
| 85 | D:ECXENC'="" FILE^ECXPIVD2 K P1,P3
|
---|
| 86 | Q
|
---|
| 87 | PAT(ECXDFN,ECXDATE,ECXERR) ;get patient demographics, primary care, and inpatient data
|
---|
| 88 | N X
|
---|
| 89 | S (ECXCAT,ECXSTAT,ECXPRIOR,ECXSBGRP,ECXOEF,ECXOEFDT)=""
|
---|
| 90 | ;get patient data if saved
|
---|
| 91 | I $D(^TMP($J,"ECXP",ECXDFN)) D
|
---|
| 92 | .S PT=^TMP($J,"ECXP",ECXDFN),ECXPNM=$P(PT,U),ECXSSN=$P(PT,U,2),ECXMPI=$P(PT,U,3)
|
---|
| 93 | .S ECXDOB=$P(PT,U,4),ECXELIG=$P(PT,U,5),ECXSEX=$P(PT,U,6),ECXSTATE=$P(PT,U,7),ECXCNTY=$P(PT,U,8),ECXZIP=$P(PT,U,9)
|
---|
| 94 | .S ECXVET=$P(PT,U,10),ECXPOS=$P(PT,U,11),ECXPST=$P(PT,U,12),ECXPLOC=$P(PT,U,13),ECXRST=$P(PT,U,14),ECXAST=$P(PT,U,15)
|
---|
| 95 | .S ECXAOL=$P(PT,U,16),ECXPHI=$P(PT,U,17),ECXMST=$P(PT,U,18),ECXENRL=$P(PT,U,19),ECXCNHU=$P(PT,U,20),ECXCAT=$P(PT,U,21)
|
---|
| 96 | .S ECXSTAT=$P(PT,U,22),ECXPRIOR=$P(PT,U,23),ECXHNCI=$P(PT,U,24),ECXETH=$P(PT,U,25),ECXRC1=$P(PT,U,26),ECXMTST=$P(PT,U,27)
|
---|
| 97 | .S PT1=$G(^TMP($J,"ECXP",ECXDFN,1)),ECXERI=$P(PT1,U),ECXEST=$P(PT1,U,2),ECXOEF=$P(PT1,U,3),ECXOEFDT=$P(PT1,U,4)
|
---|
| 98 | .I $$ENROLLM^ECXUTL2(ECXDFN)
|
---|
| 99 | ;set patient data
|
---|
| 100 | I '$D(^TMP($J,"ECXP",ECXDFN)) D Q:'OK
|
---|
| 101 | .K ECXPAT S OK=$$PAT^ECXUTL3(ECXDFN,$P(ECXDATE,"."),"1;2;3;5",.ECXPAT)
|
---|
| 102 | .I 'OK K ECXPAT S ECXERR=1 Q
|
---|
| 103 | .S ECXPNM=ECXPAT("NAME"),ECXSSN=ECXPAT("SSN"),ECXMPI=ECXPAT("MPI"),ECXDOB=ECXPAT("DOB"),ECXELIG=ECXPAT("ELIG"),ECXSEX=ECXPAT("SEX")
|
---|
| 104 | .S ECXSTATE=ECXPAT("STATE"),ECXCNTY=ECXPAT("COUNTY"),ECXZIP=ECXPAT("ZIP"),ECXVET=ECXPAT("VET")
|
---|
| 105 | .S ECXPOS=ECXPAT("POS"),ECXPST=ECXPAT("POW STAT"),ECXPLOC=ECXPAT("POW LOC"),ECXRST=ECXPAT("IR STAT")
|
---|
| 106 | .S ECXAST=ECXPAT("AO STAT"),ECXAOL=ECXPAT("AOL"),ECXPHI=ECXPAT("PHI"),ECXMST=ECXPAT("MST STAT")
|
---|
| 107 | .S ECXENRL=ECXPAT("ENROLL LOC"),ECXMTST=ECXPAT("MEANS"),ECXEST=ECXPAT("EC STAT")
|
---|
| 108 | .S ECXCNHU=$$CNHSTAT^ECXUTL4(ECXDFN) ;get CNHU status
|
---|
| 109 | .;get enrollment data (category, status and priority)
|
---|
| 110 | .I $$ENROLLM^ECXUTL2(ECXDFN)
|
---|
| 111 | .S ECXHNCI=$$HNCI^ECXUTL4(ECXDFN) ;Head and Neck Cancer Indicator
|
---|
| 112 | .; - Race and Ethnicity
|
---|
| 113 | .S ECXETH=ECXPAT("ETHNIC"),ECXRC1=ECXPAT("RACE1")
|
---|
| 114 | .S ECXERI=ECXPAT("ERI") ;emergency response indicator (FEMA)
|
---|
| 115 | .S ECXOEF=ECXPAT("ECXOEF")
|
---|
| 116 | .S ECXOEFDT=ECXPAT("ECXOEFDT")
|
---|
| 117 | .;save for later
|
---|
| 118 | .S ^TMP($J,"ECXP",ECXDFN)=ECXPNM_U_ECXSSN_U_ECXMPI_U_ECXDOB_U_ECXELIG_U_ECXSEX_U_ECXSTATE_U_ECXCNTY_U_ECXZIP_U_ECXVET_U_ECXPOS_U_ECXPST_U_ECXPLOC_U_ECXRST_U_ECXAST
|
---|
| 119 | .S ^TMP($J,"ECXP",ECXDFN)=^TMP($J,"ECXP",ECXDFN)_U_ECXAOL_U_ECXPHI_U_ECXMST_U_ECXENRL_U_ECXCNHU_U_ECXCAT_U_ECXSTAT_U_ECXPRIOR_U_ECXHNCI_U_ECXETH_U_ECXRC1_U_ECXMTST
|
---|
| 120 | .S ^TMP($J,"ECXP",ECXDFN,1)=ECXERI_U_ECXEST_U_ECXOEF_U_ECXOEFDT
|
---|
| 121 | ;get primary care data
|
---|
| 122 | S X=$$PRIMARY^ECXUTL2(ECXDFN,$P(ECXDATE,"."))
|
---|
| 123 | S ECPTTM=$P(X,U,1),ECPTPR=$P(X,U,2),ECCLAS=$P(X,U,3),ECPTNPI=$P(X,U,4),ECASPR=$P(X,U,5),ECCLAS2=$P(X,U,6),ECASNPI=$P(X,U,7)
|
---|
| 124 | ;get inpatient data
|
---|
| 125 | S (ECXA,ECXMN,ECXADM,ECXTS,ECXW,ECXDIV)="",X=$$INP^ECXUTL2(ECXDFN,ECXDATE)
|
---|
| 126 | S ECXA=$P(X,U),ECXMN=$P(X,U,2),ECXTS=$P(X,U,3),ECXADM=$P(X,U,4),W=$P(X,U,9),ECXDOM=$P(X,U,10),ECXW=$P(W,";"),ECXDIV=$P(W,";",2)
|
---|
| 127 | Q
|
---|
| 128 | SETUP ;Set required input for ECXTRAC
|
---|
| 129 | S ECHEAD="IVP"
|
---|
| 130 | D ECXDEF^ECXUTL2(ECHEAD,.ECPACK,.ECGRP,.ECFILE,.ECRTN,.ECPIECE,.ECVER)
|
---|
| 131 | ;variables ecver and ecrtn will be reset in routine ecxtrac if appropriate
|
---|
| 132 | S ECVER=7
|
---|
| 133 | Q
|
---|
| 134 | QUE ; entry point for the background requeuing handled by ECXTAUTO
|
---|
| 135 | D SETUP,QUE^ECXTAUTO,^ECXKILL Q
|
---|