[613] | 1 | VAFCMSG ;ALB/JRP-BACKGROUND JOB TO TRANSMIT ENTRIES IN PIVOT FILE ; 3/2/04 12:54pm
|
---|
| 2 | ;;5.3;Registration;**91,149,530,578**;Jun 06, 1996
|
---|
| 3 | ;
|
---|
| 4 | MAIN ;Main entry point for background job
|
---|
| 5 | ;
|
---|
| 6 | ;attempt to lock non existant global.
|
---|
| 7 | L +^VAT(391.71,"VAFC BATCH UPDATE ADT/HL7"):1 I '$T Q
|
---|
| 8 | ;Send messages ? 0=STOP,2=SUSPEND
|
---|
| 9 | N SEND
|
---|
| 10 | S SEND=$P($$SEND^VAFHUTL(),"^",2)
|
---|
| 11 | I (SEND=0)!(SEND=2) L -^VAT(391.71,"VAFC BATCH UPDATE ADT/HL7") Q
|
---|
| 12 | ;Send Registration messages
|
---|
| 13 | D BCSTA04
|
---|
| 14 | ;Send changes to patient's demographical data (ADT-A08)
|
---|
| 15 | D BCSTA08
|
---|
| 16 | ;Send changes to patient's treating facility list (MFU-M05)
|
---|
| 17 | D BCKTFMFU^VAFCTFMF
|
---|
| 18 | ;unlock global
|
---|
| 19 | L -^VAT(391.71,"VAFC BATCH UPDATE ADT/HL7")
|
---|
| 20 | ;K DIC,X,Y
|
---|
| 21 | Q
|
---|
| 22 | ;
|
---|
| 23 | BCSTA08 ;Broadcast ADT-A08 messages for all entries in ADT/HL PIVOT file
|
---|
| 24 | ;(#391.71) that have been marked for transmission
|
---|
| 25 | ;
|
---|
| 26 | ;Input : None
|
---|
| 27 | ;Output : None
|
---|
| 28 | ;
|
---|
| 29 | ;Declare variables
|
---|
| 30 | N PIVOTPTR,NODE,DFN,EDITDATE,TMP,INFOARR
|
---|
| 31 | S INFOARR="^TMP(""VAFCMSG"","_$J_",""EVNTINFO"")"
|
---|
| 32 | K @INFOARR
|
---|
| 33 | ;Loop through pivot file based on demographic updates
|
---|
| 34 | S PIVOTPTR=0
|
---|
| 35 | F S PIVOTPTR=+$O(^VAT(391.71,"AXMIT",4,PIVOTPTR)) Q:('PIVOTPTR) D
|
---|
| 36 | .;Bad entry in cross reference - delete it and quit
|
---|
| 37 | .I ('$D(^VAT(391.71,PIVOTPTR))) K ^VAT(391.71,"AXMIT",4,PIVOTPTR) Q
|
---|
| 38 | .;Get event date and pointer to patient
|
---|
| 39 | .S NODE=$G(^VAT(391.71,PIVOTPTR,0))
|
---|
| 40 | .S EDITDATE=+NODE
|
---|
| 41 | .S DFN=+$P(NODE,"^",3)
|
---|
| 42 | .;PATCH 530 check global for lock status - quit if locked.
|
---|
| 43 | .L +^DPT(DFN):1 I '$T Q
|
---|
| 44 | .;Bad pointer to patient - mark entry as transmitted and quit
|
---|
| 45 | .I ('$D(^DPT(DFN,0)))!($G(^DPT(DFN,-9))) D XMITFLAG^VAFCDD01(PIVOTPTR,"",1) Q
|
---|
| 46 | .I $P(^DPT(DFN,0),U)="" D XMITFLAG^VAFCDD01(PIVOTPTR,"",1) Q
|
---|
| 47 | .I '$D(^DPT("B",$P(^DPT(DFN,0),U),DFN)) D XMITFLAG^VAFCDD01(PIVOTPTR,"",1) Q
|
---|
| 48 | .;Store info into event information array
|
---|
| 49 | .K @INFOARR
|
---|
| 50 | .S @INFOARR@("PIVOT")=PIVOTPTR
|
---|
| 51 | .;Event reason code
|
---|
| 52 | .; 99 = Death 98 = Resurrection 97=Sensitivity Update
|
---|
| 53 | .; Death will overwrite any other reason code. It is the
|
---|
| 54 | .; dominant reason code.
|
---|
| 55 | .S @INFOARR@("REASON",1)=""
|
---|
| 56 | .S @INFOARR@("REASON",1)=$P($G(^VAT(391.71,PIVOTPTR,0)),"^",10)
|
---|
| 57 | .I (+$G(^DPT(DFN,.35))) S @INFOARR@("REASON",1)=99
|
---|
| 58 | .;
|
---|
| 59 | .; user/operator name from duz
|
---|
| 60 | .S DIC="^VA(200,",DIC(0)="MZO",X="`"_+$P(NODE,"^",9) D ^DIC
|
---|
| 61 | .S @INFOARR@("USER")=$P($G(Y),"^",2)
|
---|
| 62 | .;
|
---|
| 63 | .S @INFOARR@("EVENT-NUM")=$P(NODE,"^",2)
|
---|
| 64 | .S @INFOARR@("VAR-PTR")=$P(NODE,"^",5)
|
---|
| 65 | .;
|
---|
| 66 | .;Broadcast ADT-A08 message
|
---|
| 67 | .S TMP=$$BCSTADT^VAFCMSG0(DFN,"A08",EDITDATE,INFOARR)
|
---|
| 68 | .;Store result in pivot file
|
---|
| 69 | .S:$P(TMP,U,2)]"" TMP=$P(TMP,U,2) D FILERM^VAFCUTL(PIVOTPTR,TMP)
|
---|
| 70 | .;Error broadcasting message
|
---|
| 71 | .Q:(TMP<0)
|
---|
| 72 | .;Mark entry in pivot file as transmitted
|
---|
| 73 | .D XMITFLAG^VAFCDD01(PIVOTPTR,"",1)
|
---|
| 74 | .;PATCH 530 if locked by check unlock.
|
---|
| 75 | .L -^DPT(DFN)
|
---|
| 76 | ;Done - clean up and quit
|
---|
| 77 | K @INFOARR
|
---|
| 78 | Q
|
---|
| 79 | ;
|
---|
| 80 | BCSTA04 ;Broadcast ADT-A04 messages for all entries in ADT/HL PIVOT file
|
---|
| 81 | ;(#391.71) that have been marked for transmission
|
---|
| 82 | ;
|
---|
| 83 | ;Input : None
|
---|
| 84 | ;Output : None
|
---|
| 85 | ;
|
---|
| 86 | ;Declare variables
|
---|
| 87 | N PIVOTPTR,NODE,DFN,EDITDATE,FIELDS,RESULT
|
---|
| 88 | S PIVOTPTR=0
|
---|
| 89 | F S PIVOTPTR=+$O(^VAT(391.71,"AXMIT",3,PIVOTPTR)) Q:('PIVOTPTR) D
|
---|
| 90 | .;Bad entry in cross reference - delete it and quit
|
---|
| 91 | .I ('$D(^VAT(391.71,PIVOTPTR))) K ^VAT(391.71,"AXMIT",3,PIVOTPTR) Q
|
---|
| 92 | .;Get event date and pointer to patient
|
---|
| 93 | .S NODE=$G(^VAT(391.71,PIVOTPTR,0))
|
---|
| 94 | .S FIELDS=$G(^VAT(391.71,PIVOTPTR,2))
|
---|
| 95 | .S USER=+$P(NODE,"^",9)
|
---|
| 96 | .S EDITDATE=+NODE
|
---|
| 97 | .S DFN=+$P(NODE,"^",3)
|
---|
| 98 | .;PATCH 530 check for locked record - quit if locked.
|
---|
| 99 | .L +^DPT(DFN):1 I '$T Q
|
---|
| 100 | .;Bad pointer to patient - mark entry as transmitted and quit
|
---|
| 101 | .I ('$D(^DPT(DFN,0)))!($G(^DPT(DFN,-9))) D XMITFLAG^VAFCDD01(PIVOTPTR,"",1) Q
|
---|
| 102 | .I $P(^DPT(DFN,0),U)="" D XMITFLAG^VAFCDD01(PIVOTPTR,"",1) Q
|
---|
| 103 | .I '$D(^DPT("B",$P(^DPT(DFN,0),U),DFN)) D XMITFLAG^VAFCDD01(PIVOTPTR,"",1) Q
|
---|
| 104 | .;Broadcast ADT-A04 message
|
---|
| 105 | .S RESULT=$$EN^VAFCA04(DFN,EDITDATE,USER,PIVOTPTR)
|
---|
| 106 | .D XMITFLAG^VAFCDD01(PIVOTPTR,"",1)
|
---|
| 107 | .L -^DPT(DFN)
|
---|
| 108 | ;Done - quit
|
---|
| 109 | Q
|
---|