| [613] | 1 | IBOVOP1 ;ALB/RLW-Report of Visits for NSC Outpatients ;12-JUN-92 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**52,91,99,132,156,176,234,249,339**;21-MAR-94;Build 2 | 
|---|
|  | 3 | ;;Per VHA Directive 2004-038, this routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | MAIN(IBQUERY) ; perform report for day(s) | 
|---|
|  | 6 | ; IBQUERY = the query object to use to search for outpt encounters | 
|---|
|  | 7 | ;           if not a valid #, a new QUERY will be created | 
|---|
|  | 8 | D HDR^IBOVOP2 | 
|---|
|  | 9 | I $$STOP^IBOUTL("Outpatient/Registration Events Report") S IBQUIT=1 G END | 
|---|
|  | 10 | ; scan visits for NSC patients | 
|---|
|  | 11 | N IBVAL,IBCBK,IBCK,IBFILTER,IBPB,IBOE,IBOE0,IBZ | 
|---|
|  | 12 | S IBVAL("BDT")=IBDATE,IBVAL("EDT")=IBDATE\1+.99 | 
|---|
|  | 13 | S IBFILTER="" | 
|---|
|  | 14 | ; Look for hospital location is a clinic-type, valid Means-Test or LTC patient, and potentially billable events | 
|---|
|  | 15 | S IBCBK="I $D(^SC(""AC"",""C"",+$P(Y0,U,4))) D IBCBK^IBOVOP1(Y,Y0,.IBCK)" ; Action of scanning | 
|---|
|  | 16 | F IBZ=9,13.1 S IBCK(IBZ)="" | 
|---|
|  | 17 | D SCAN^IBSDU("DATE/TIME",.IBVAL,"",IBCBK,0,.IBQUERY) K ^TMP("DIERR",$J) | 
|---|
|  | 18 | ; Search for Inpatient Observations | 
|---|
|  | 19 | D IBOVOP^IBECEAU5(IBDATE) | 
|---|
|  | 20 | D PRINT^IBOVOP2 | 
|---|
|  | 21 | END K DFN,^TMP("IBOVOP",$J),IBAPPT,IBJ,IB | 
|---|
|  | 22 | Q | 
|---|
|  | 23 | ; | 
|---|
|  | 24 | ; To be executed only if the hospital location a clinic-type. | 
|---|
|  | 25 | ; Check the record, and add to the ^TMP if needed | 
|---|
|  | 26 | ; IBENC - encounter IEN | 
|---|
|  | 27 | ; IBENCZ - encounter zero-node | 
|---|
|  | 28 | ; IBCK - array of criteria flags for the $$BILLCK^IBAMTEDU() API call | 
|---|
|  | 29 | IBCBK(IBENC,IBENCZ,IBCK) ; | 
|---|
|  | 30 | N IBPAT,IBDAT,Y,Y0,X | 
|---|
|  | 31 | ; Quit if not a billable event | 
|---|
|  | 32 | I '$$BILLCK^IBAMTEDU(IBENC,IBENCZ,.IBCK) Q | 
|---|
|  | 33 | S IBDAT=+IBENCZ ; Date of event | 
|---|
|  | 34 | S IBPAT=+$P(IBENCZ,U,2) Q:'IBPAT  ; Patient IEN | 
|---|
|  | 35 | ; Check for valid MT or LTC patient | 
|---|
|  | 36 | I '$$BIL^DGMTUB(IBPAT,IBDAT),+$$LTCST^IBAECU(IBPAT,IBDAT,1)'=2 Q | 
|---|
|  | 37 | D OPTENC(IBENC,IBENCZ) ; Extract Outpatient Encounter and add to the ^TMP global | 
|---|
|  | 38 | Q | 
|---|
|  | 39 | ; | 
|---|
|  | 40 | ; | 
|---|
|  | 41 | OPTENC(IBOE,IBOE0) ; Extract outpatient encounter | 
|---|
|  | 42 | N IBCL,DFN,IBFLD4,IBJ,IBSEQ | 
|---|
|  | 43 | S DFN=+$P(IBOE0,U,2),IBJ=+IBOE0,IBCL=+$P(IBOE0,U,4),IBSEQ=0 | 
|---|
|  | 44 | Q:'$$BIL^DGMTUB(DFN,IBJ) | 
|---|
|  | 45 | I $P(IBOE0,U,8)=1 D  ; - appt | 
|---|
|  | 46 | .;            field 4=clinic | 
|---|
|  | 47 | .;            field 5=appt type | 
|---|
|  | 48 | .;            field 6=status | 
|---|
|  | 49 | . S IBFLD4=$P($G(^SC(IBCL,0)),U) | 
|---|
|  | 50 | . I IBFLD4'="" S:+$G(^SC(IBCL,"AT"))=6 IBFLD4=$E(IBFLD4,1,13)_" [R]" | 
|---|
|  | 51 | . S ^TMP("IBOVOP",$J,$$FLD1(DFN),"CLINIC APPT",$$FLD3(IBJ),0)=$E(IBFLD4,1,17)_U_$$FLD5($P(IBOE0,U,10))_U_$E($$EXTERNAL^DILFD(409.68,.12,"",$P(IBOE0,"^",12)),1,17)_U_DFN_U_IBOE Q | 
|---|
|  | 52 | ; | 
|---|
|  | 53 | I $P(IBOE0,U,8)=2 D  ; - add/edit stop code | 
|---|
|  | 54 | .;           field 5=appt type | 
|---|
|  | 55 | . S ^TMP("IBOVOP",$J,$$FLD1(DFN),"STOP CODE",$$FLD3(IBJ),IBSEQ)=$E($P($G(^DIC(40.7,$P(IBOE0,U,3),0)),U),1,16)_U_$$FLD5($P(IBOE0,U,10))_"^^"_DFN_U_IBOE,IBSEQ=IBSEQ+1 | 
|---|
|  | 56 | ; | 
|---|
|  | 57 | I $P(IBOE0,U,8)=3 D  ; - registration | 
|---|
|  | 58 | . Q:'$$DISCT^IBEFUNC(IBOE,IBOE0) | 
|---|
|  | 59 | . S IBDATA=$$DISND^IBSDU(IBOE,IBOE0) | 
|---|
|  | 60 | . S IBFLD4=$E($$EXTERNAL^DILFD(2.101,2,"",$P(IBDATA,U,3)),1,16) | 
|---|
|  | 61 | . S Y=$E($$EXTERNAL^DILFD(2.101,6,"",$P(IBDATA,U,7)),1,30) | 
|---|
|  | 62 | . S ^TMP("IBOVOP",$J,$$FLD1(DFN),"REGISTRATION",$$FLD3(IBJ),0)=IBFLD4_U_Y_"^^"_DFN_U_IBOE | 
|---|
|  | 63 | ; | 
|---|
|  | 64 | K IBB,IBE,IBX,IBY,IBCLN,IBXP,IBDFN,IBAPDT,IBAPTYP,X,Y | 
|---|
|  | 65 | Q | 
|---|
|  | 66 | CKENC(IBOE,IBOE0,IBSEQ) ; | 
|---|
|  | 67 | S DFN=$P(IBOE0,U,2),IBJ=+IBOE0 | 
|---|
|  | 68 | Q | 
|---|
|  | 69 | ; | 
|---|
|  | 70 | FLD1(DFN) ; get patient name, l-4 ssn id, classification, insured? | 
|---|
|  | 71 | I '$G(DFN) Q "" | 
|---|
|  | 72 | N IBX,IBY,IBZ S IBX=$$PT^IBEFUNC(DFN),IBZ="" | 
|---|
|  | 73 | D CL^IBACV(DFN,IBDATE,"",.IBY) | 
|---|
|  | 74 | I $D(IBY(1)) S IBZ="AO" | 
|---|
|  | 75 | I $D(IBY(2)) S IBZ=IBZ_$S(IBZ]"":"/",1:"")_"IR" | 
|---|
|  | 76 | I $D(IBY(3)) S IBZ=IBZ_$S(IBZ]"":"/",1:"")_"SC" | 
|---|
|  | 77 | I $D(IBY(4)) S IBZ=IBZ_$S(IBZ]"":"/",1:"")_"SWA" | 
|---|
|  | 78 | I $D(IBY(5)) S IBZ=IBZ_$S(IBZ]"":"/",1:"")_"MST" | 
|---|
|  | 79 | I $D(IBY(6)) S IBZ=IBZ_$S(IBZ]"":"/",1:"")_"HNC" | 
|---|
|  | 80 | I $D(IBY(7)) S IBZ=IBZ_$S(IBZ]"":"/",1:"")_"CV" | 
|---|
|  | 81 | I $D(IBY(8)) S IBZ=IBZ_$S(IBZ]"":"/",1:"")_"SHAD" | 
|---|
|  | 82 | Q $E($P(IBX,U),1,20)_" "_$E(IBX)_$P(IBX,U,3)_$S(IBZ]"":"    ["_IBZ_"]",1:"")_$S($$INSURED^IBCNS1(DFN,IBDATE):"    **Insured**",1:"") | 
|---|
|  | 83 | ; | 
|---|
|  | 84 | FLD3(Y) ; time - convert date/time to time only, no seconds | 
|---|
|  | 85 | I '$G(Y) Q "" | 
|---|
|  | 86 | X ^DD("DD") Q $P($P(Y,"@",2),":",1,2) | 
|---|
|  | 87 | ; | 
|---|
|  | 88 | FLD5(I) ; get appointment type name | 
|---|
|  | 89 | Q $E($P($G(^SD(409.1,+$G(I),0)),U,1),1,17) | 
|---|