DGRUDD01 ;ALB/SCK - Data Dictionary Utilities MDS COTS update ;8-10-99
;;5.3;Registration;**190,1015**;Aug 13, 1993;Build 21
;
ADGRU(DFN) ; ADGRU* cross reference for Patient File (#2)
;
; Input : DFN - Pointer to entry in PATIENT File (#2)
;
; Output : None
;
; Note: The ADGRU* cross references are used to remember that changes
; were made to the PATIENT File(#2) outside of the Registration
; Process. Execution of this cross reference will mark an entry
; in the ADT/HL7 PIVOT file (#391.71) and mark it as requiring
; transmission on an HL7 ADT-A08 message.
;
; Execution of this cross reference can be prevented by setting
; the local variable DGRUGA08 equal to 1
;
; This cross reference is intended for notifing the Resident
; Assessment Instrument COTS database of a demographic change
; to a patients data.
;
; Check Input
I +$G(DFN),$D(^DPT(DFN,0))
E Q
;
N VARPTR,PIVOTNUM,DGRU,VAFHDT,VAROOT
;
; Check for flag
Q:$G(DGRUGA08)
; Test for HL7 ADT on/off parameter
Q:'$P($$SEND^VAFHUTL(),"^",2)
; Test for Inpatient status on TODAY, if patient is not an inpatient today
; then quit any further processing.
S VAROOT="DGRU",VAFHDT=$$DT^XLFDT
D INP^VADPT
; check admission date and ward location for inpatient status
I '(+DGRU(1)),'(+DGRU(4)) Q
; check for ward flagged as RAI/MDS ward.
Q:'$$CHKWARD^DGRUUTL(+DGRU(4))
; All checks passed
; Check for change to SSN. If the SSN has changed, then we need to process
; the SSN change differently through the RAI MONITOR file rather than using
; the pivot file.
;
N DGOK
S DGSNOLD=$P($G(D),"^",9)
S DGSNNEW=$P($G(DV),"^",9)
I +DGSNNEW>0&(+DGSNOLD>0) D Q:$G(DGOK)
. I DGSNOLD'=DGSNNEW D Q
.. N DGX S DGX=$O(^DGRU(46.11,"B",DGSNNEW,0))
.. Q:$G(DGX)>0
.. N FDA
.. S FDA(1,46.11,"+1,",.01)=DGSNNEW
.. S FDA(1,46.11,"+1,",.02)=DGSNOLD
.. S FDA(1,46.11,"+1,",.03)=2
.. S FDA(1,46.11,"+1,",.04)=DFN
.. D UPDATE^DIE("E","FDA(1)")
.. S DGOK=1
;
; Create entry in pivot file
D PVT4A08(DFN)
;
I PIVOTNUM<0 Q
D XMITFLAG^VAFCDD01(0,PIVOTNUM)
;
Q
;
PVT4A08(DFN) ; Create an entry in the ADT/HL7 PIVOT file for a patient demographic
; update event and mark it for transmission
;
; Input : DFN - pointer to entry in PATIENT File (#2)
;
; Output : None
;
; Check input
I +$G(DFN),$D(^DPT(DFN,0))
E Q
;
S VARPTR=DFN_";DPT("
;
S PIVOTNUM=+$$PIVNW^VAFHPIVT(DFN,$P(DT,"."),6,VARPTR)
Q:(PIVOTNUM<0)
;
; Mark entry as requires transmission
I $G(DGRUGA08),$P($$SEND^VAFHUTL(),"^",2) D XMITFLAG^VAFCDD01(0,PIVOTNUM)
; Mark entry as transmitted field YES
;I $G(DGRUGA08),$$SEND^VAFHUTL() S SETFLAG^VAFCDD01(0,PIVOTNUM)
Q
DGRUDD01 ;ALB/SCK - Data Dictionary Utilities MDS COTS update ;8-10-99
+1 ;;5.3;Registration;**190,1015**;Aug 13, 1993;Build 21
+2 ;
ADGRU(DFN) ; ADGRU* cross reference for Patient File (#2)
+1 ;
+2 ; Input : DFN - Pointer to entry in PATIENT File (#2)
+3 ;
+4 ; Output : None
+5 ;
+6 ; Note: The ADGRU* cross references are used to remember that changes
+7 ; were made to the PATIENT File(#2) outside of the Registration
+8 ; Process. Execution of this cross reference will mark an entry
+9 ; in the ADT/HL7 PIVOT file (#391.71) and mark it as requiring
+10 ; transmission on an HL7 ADT-A08 message.
+11 ;
+12 ; Execution of this cross reference can be prevented by setting
+13 ; the local variable DGRUGA08 equal to 1
+14 ;
+15 ; This cross reference is intended for notifing the Resident
+16 ; Assessment Instrument COTS database of a demographic change
+17 ; to a patients data.
+18 ;
+19 ; Check Input
+20 IF +$GET(DFN)
IF $DATA(^DPT(DFN,0))
+21 IF '$TEST
QUIT
+22 ;
+23 NEW VARPTR,PIVOTNUM,DGRU,VAFHDT,VAROOT
+24 ;
+25 ; Check for flag
+26 IF $GET(DGRUGA08)
QUIT
+27 ; Test for HL7 ADT on/off parameter
+28 IF '$PIECE($$SEND^VAFHUTL(),"^",2)
QUIT
+29 ; Test for Inpatient status on TODAY, if patient is not an inpatient today
+30 ; then quit any further processing.
+31 SET VAROOT="DGRU"
SET VAFHDT=$$DT^XLFDT
+32 DO INP^VADPT
+33 ; check admission date and ward location for inpatient status
+34 IF '(+DGRU(1))
IF '(+DGRU(4))
QUIT
+35 ; check for ward flagged as RAI/MDS ward.
+36 IF '$$CHKWARD^DGRUUTL(+DGRU(4))
QUIT
+37 ; All checks passed
+38 ; Check for change to SSN. If the SSN has changed, then we need to process
+39 ; the SSN change differently through the RAI MONITOR file rather than using
+40 ; the pivot file.
+41 ;
+42 NEW DGOK
+43 SET DGSNOLD=$PIECE($GET(D),"^",9)
+44 SET DGSNNEW=$PIECE($GET(DV),"^",9)
+45 IF +DGSNNEW>0&(+DGSNOLD>0)
Begin DoDot:1
+46 IF DGSNOLD'=DGSNNEW
Begin DoDot:2
+47 NEW DGX
SET DGX=$ORDER(^DGRU(46.11,"B",DGSNNEW,0))
+48 IF $GET(DGX)>0
QUIT
+49 NEW FDA
+50 SET FDA(1,46.11,"+1,",.01)=DGSNNEW
+51 SET FDA(1,46.11,"+1,",.02)=DGSNOLD
+52 SET FDA(1,46.11,"+1,",.03)=2
+53 SET FDA(1,46.11,"+1,",.04)=DFN
+54 DO UPDATE^DIE("E","FDA(1)")
+55 SET DGOK=1
End DoDot:2
QUIT
End DoDot:1
IF $GET(DGOK)
QUIT
+56 ;
+57 ; Create entry in pivot file
+58 DO PVT4A08(DFN)
+59 ;
+60 IF PIVOTNUM<0
QUIT
+61 DO XMITFLAG^VAFCDD01(0,PIVOTNUM)
+62 ;
+63 QUIT
+64 ;
PVT4A08(DFN) ; Create an entry in the ADT/HL7 PIVOT file for a patient demographic
+1 ; update event and mark it for transmission
+2 ;
+3 ; Input : DFN - pointer to entry in PATIENT File (#2)
+4 ;
+5 ; Output : None
+6 ;
+7 ; Check input
+8 IF +$GET(DFN)
IF $DATA(^DPT(DFN,0))
+9 IF '$TEST
QUIT
+10 ;
+11 SET VARPTR=DFN_";DPT("
+12 ;
+13 SET PIVOTNUM=+$$PIVNW^VAFHPIVT(DFN,$PIECE(DT,"."),6,VARPTR)
+14 IF (PIVOTNUM<0)
QUIT
+15 ;
+16 ; Mark entry as requires transmission
+17 IF $GET(DGRUGA08)
IF $PIECE($$SEND^VAFHUTL(),"^",2)
DO XMITFLAG^VAFCDD01(0,PIVOTNUM)
+18 ; Mark entry as transmitted field YES
+19 ;I $G(DGRUGA08),$$SEND^VAFHUTL() S SETFLAG^VAFCDD01(0,PIVOTNUM)
+20 QUIT