[613] | 1 | DGPMVPU ;ALB/CAW - Update Provider(s) from OE/RR ;4/19/95
|
---|
| 2 | ;;5.3;Registration;**57**;Aug 13, 1993
|
---|
| 3 | ;
|
---|
| 4 | EN ; Queue provider update to avoid problems with recursive calls
|
---|
| 5 | S ZTSAVE("XQORMSG(")="",ZTIO="",ZTDTH=$$NOW^XLFDT(),ZTRTN="DQ^DGPMVPU"
|
---|
| 6 | S ZTDESC="Update provider based on OR pre-admit order"
|
---|
| 7 | D ^%ZTLOAD
|
---|
| 8 | K ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTSK
|
---|
| 9 | Q
|
---|
| 10 | ;
|
---|
| 11 | DQ ; Find last movement from event date
|
---|
| 12 | D INIT G:$G(DGQUIT) ENQ
|
---|
| 13 | D FMVMT ;Find last treating specialty movement
|
---|
| 14 | I '$$INPTCHK(DFN) G ENQ ;Check to see if patient is current inpatient
|
---|
| 15 | D COMPARE G:'$G(DGGO) ENQ ;Check to see if a provider change
|
---|
| 16 | D CRMVMT ;Create new entry and update provider
|
---|
| 17 | D EVT ;Set up event driver variables
|
---|
| 18 | S DGQUIET=1 D ^DGPMEVT ;Call DGPM event driver
|
---|
| 19 | ENQ K DGEVT,DFN,DGPPROV,DGAPROV,DGLSTM,DGMVMT,DGMVT,DGPMT,DGPMPC,DGPMCA
|
---|
| 20 | K DGPMDA,DGPMP,DGQUIET,DGPMN,DGPMA,DGQUIT,DGGO,Y,^UTILITY("DGPM",$J)
|
---|
| 21 | Q
|
---|
| 22 | ;
|
---|
| 23 | INIT ; Init variables
|
---|
| 24 | ; Input - XQORMSG variables from OE/RR
|
---|
| 25 | ; Output - DGEVT = The event type-needs to A08 for provider update
|
---|
| 26 | ; DFN = Patient IFN (from XQORMSG variables)
|
---|
| 27 | ; DGPPROV = Primary Provider (from XQORMSG variables)
|
---|
| 28 | ; DGAPROV = Attending Provider (from XQORMSG variables)
|
---|
| 29 | ; DGLSTM = Date/Time of event (from XQORMSG variables)
|
---|
| 30 | ;
|
---|
| 31 | S DGEVT=$P(XQORMSG(2),"|",2) I DGEVT'="A08" S DGQUIT=1 G INITQ
|
---|
| 32 | S DFN=$P(XQORMSG(3),"|",4)
|
---|
| 33 | I $G(^DPT(DFN,0))']"" S DGQUIT=1 G INITQ
|
---|
| 34 | S DGLSTM=$P(XQORMSG(2),"|",3) I 'DGLSTM S DGQUIT=1 G INITQ
|
---|
| 35 | S DGPPROV=$P($P(XQORMSG(5),"|",2),U),DGAPROV=$P($P(XQORMSG(4),"|",8),U)
|
---|
| 36 | I 'DGPPROV&('DGAPROV) S DGQUIT=1
|
---|
| 37 | INITQ Q
|
---|
| 38 | ;
|
---|
| 39 | INPTCHK(DFN) ; Check to see if patient is a current inpatient
|
---|
| 40 | ; Input - DFN = Patient IFN
|
---|
| 41 | ; Output - 0 = Not a current inpatient
|
---|
| 42 | ; number = internal file number of the admission movement
|
---|
| 43 | ;
|
---|
| 44 | N VAIN,VAINDT,VAERR
|
---|
| 45 | D NOW^%DTC S VAINDT=%
|
---|
| 46 | D ADM^VADPT2
|
---|
| 47 | Q +VADMVT
|
---|
| 48 | ;
|
---|
| 49 | FMVMT ; Find the last movement
|
---|
| 50 | ; Input - DGLSTM = The date/time passes in from OE/RR
|
---|
| 51 | ; Output - DGMVMT = The 0th node of the last treating specialty
|
---|
| 52 | ; DGMVT = The IFN of the last treating specialty
|
---|
| 53 | ;
|
---|
| 54 | N DGLST
|
---|
| 55 | S DGLST=9999999.9999999-DGLSTM
|
---|
| 56 | S DGLST=$O(^DGPM("ATID6",DFN,DGLST))
|
---|
| 57 | S DGMVT=$O(^DGPM("ATID6",DFN,+DGLST,""))
|
---|
| 58 | S DGMVMT=$G(^DGPM(+DGMVT,0))
|
---|
| 59 | FMVMTQ Q
|
---|
| 60 | ;
|
---|
| 61 | COMPARE ; Check to see if provider is different than what is on file
|
---|
| 62 | ; Input - DGMVMT = 0th node of last treating specialty
|
---|
| 63 | ; DGPPROV = Primary Provider IFN
|
---|
| 64 | ; DGAPROV = Attending Provider IFN
|
---|
| 65 | ; Output - DGGO = Set if Primary/Attending is changing
|
---|
| 66 | ;
|
---|
| 67 | I $P(DGMVMT,U,8)'=DGPPROV S DGGO=1
|
---|
| 68 | I $P(DGMVMT,U,19)'=DGAPROV S DGGO=1
|
---|
| 69 | Q
|
---|
| 70 | ;
|
---|
| 71 | CRMVMT ; Create new movement for provider change
|
---|
| 72 | ; Input - DFN - Patient IFN
|
---|
| 73 | ; DGMVMT - 0th node of last treating specialty
|
---|
| 74 | ;
|
---|
| 75 | N DA,Y,%,X,DIC,DIK,DGPMY,DGPM0ND
|
---|
| 76 | K ^UTILITY("DGPM",$J)
|
---|
| 77 | D NOW^%DTC S DGPMY=%
|
---|
| 78 | S DGPM0ND=DGPMY_"^"_6_"^"_DFN_"^^^^^"_DGPPROV_"^^^^^^"_$P(DGMVMT,U,14)_"^^^^^"_DGAPROV
|
---|
| 79 | S DGPMT=6,DGPMPC="",DGPMCA=$P(DGMVMT,U,14)
|
---|
| 80 | S DGPM0ND=$$PRODAT^DGPMV3(DGPM0ND)
|
---|
| 81 | D NEW^DGPMV301 S DGMVT=+Y
|
---|
| 82 | Q
|
---|
| 83 | ;
|
---|
| 84 | EVT ; Create variables for DGPM event driver
|
---|
| 85 | ; Input - DGMVT - IFN of ^DGPM
|
---|
| 86 | ; Output - DGPMP - 0th node of prior update
|
---|
| 87 | ; DGPMA - 0th node of after update
|
---|
| 88 | ; Corresponding before/after ^UTILITY( global
|
---|
| 89 | ;
|
---|
| 90 | S (DGPMDA,Y)=DGMVT
|
---|
| 91 | S (DGPMP,^UTILITY("DGPM",$J,6,+Y,"P"))=""
|
---|
| 92 | S DGPMN=1 D PRIOR^DGPMV36
|
---|
| 93 | S (DGPMA,^UTILITY("DGPM",$J,6,+Y,"A"))=$G(^DGPM(+Y,0))
|
---|
| 94 | D AFTER^DGPMV36
|
---|
| 95 | Q
|
---|