49 lines
1.6 KiB
Mathematica
49 lines
1.6 KiB
Mathematica
IVMPINS ;ALB/CPM,PHH - INSURANCE EVENT DRIVER INTERFACE ; 01-MAY-94
|
|
;;2.0;INCOME VERIFICATION MATCH;**9,94**; 21-OCT-94
|
|
;;Per VHA Directive 10-93-142, this routine should not be modified.
|
|
;
|
|
EN ; Queue transmission if an IVM patient's insurance status changes.
|
|
; Input: DFN -- Pointer to the patient in file #2
|
|
;
|
|
N EVENTS
|
|
S EVENTS("IVM")=1
|
|
;
|
|
I '$G(DFN) G ENQ
|
|
;
|
|
; - quit if invoked by the IVM insurance upload process
|
|
I $G(IVMINSUP) G ENQ
|
|
;
|
|
; - quit if the patient is not Cat C or Cat A
|
|
S IVMMT=$$LST^DGMTU(DFN)
|
|
I $P(IVMMT,"^",4)'="A",$P(IVMMT,"^",4)'="C" G ENQ
|
|
;
|
|
; - find the latest IVM case record, if it exists
|
|
S (IVMDA,IVMDT,X)=0
|
|
F S X=$O(^IVM(301.5,"APT",DFN,X)) Q:'X S IVMDT=X
|
|
I IVMDT S IVMDA=+$O(^IVM(301.5,"APT",DFN,IVMDT,0))
|
|
S IVMNEW='IVMDA
|
|
;
|
|
; - determine changes in insurance status
|
|
S IVMINSP=$$PRIOR(IVMDA)
|
|
S IVMINSA=$$INSUR^IBBAPI(DFN)
|
|
;
|
|
; - queue transmission if status has changed
|
|
I IVMDA,(IVMINSP&'IVMINSA)!('IVMINSP&IVMINSA=1) I $$SETSTAT^IVMPLOG(IVMDA,.EVENTS)
|
|
;
|
|
; - queue transmission if Cat C pt w/o a case record has no insurance
|
|
I 'IVMDA,'IVMINSA,$P(IVMMT,"^",4)="C" S IVMDT=$$LYR^DGMTSCU1(+$P(IVMMT,"^",2)) I $$LOG^IVMPLOG(DFN,IVMDT,.EVENTS)
|
|
;
|
|
ENQ K IVMDA,IVMDT,IVMINSA,IVMINSP,IVMMT,IVMNEW,X
|
|
Q
|
|
;
|
|
;
|
|
PRIOR(DA) ; Find insurance status from last transmission
|
|
; Input: DA -- Pointer to the case record in file #301.5
|
|
; Output: 0 -- No active insurance at last transmission
|
|
; (or could not identify last transmission)
|
|
; 1 -- Had active insurance at last transmission
|
|
;
|
|
N X,Y S (X,Y)=0
|
|
I $G(DA) F S Y=$O(^IVM(301.6,"B",DA,Y)) Q:'Y S X=Y
|
|
Q $S(X:+$P($G(^IVM(301.6,X,1)),"^",2),1:0)
|