1 | SCMCEV3 ;ALB/CMM - TEAM EVENT DRIVER UTILITIES ; 03/20/96
|
---|
2 | ;;5.3;Scheduling;**41**;AUG 13, 1993
|
---|
3 | ;
|
---|
4 | INVOKE(DFN) ;envokes Team Event Driver
|
---|
5 | I '$D(^TMP($J,"SC CED",DFN,"BEFORE"))!('$D(^TMP($J,"SC CED",DFN,"AFTER"))) G EXIT
|
---|
6 | S X=+$O(^ORD(101,"B","SC CLINIC ENROLL/DISCHARGE EVENT DRIVER",0))_";ORD(101,"
|
---|
7 | D EN^XQOR
|
---|
8 | EXIT ;
|
---|
9 | K ^TMP($J,"SC CED",DFN,"BEFORE"),^TMP($J,"SC CED",DFN,"AFTER"),X
|
---|
10 | Q
|
---|
11 | ;
|
---|
12 | BEFORE(DFN) ;
|
---|
13 | ;get before picture of ^DPT(DFN,"DE") node
|
---|
14 | ;
|
---|
15 | K ^TMP($J,"SC CED",DFN,"BEFORE")
|
---|
16 | MERGE ^TMP($J,"SC CED",DFN,"BEFORE")=^DPT(DFN,"DE")
|
---|
17 | I '$D(^TMP($J,"SC CED",DFN,"BEFORE")) S ^TMP($J,"SC CED",DFN,"BEFORE")=""
|
---|
18 | ; ^ not enrolled in any clinics ever
|
---|
19 | Q
|
---|
20 | ;
|
---|
21 | AFTER(DFN) ;
|
---|
22 | ;get after picture of ^DPT(DFN,"DE") node
|
---|
23 | ;
|
---|
24 | K ^TMP($J,"SC CED",DFN,"AFTER")
|
---|
25 | MERGE ^TMP($J,"SC CED",DFN,"AFTER")=^DPT(DFN,"DE")
|
---|
26 | Q
|
---|
27 | ;
|
---|
28 | COMPARE(DFN) ;team event driver
|
---|
29 | ;compare before and after of DFN's "DE" node
|
---|
30 | N NXT,SUB1,SUB2,NEW,CLN,ENT
|
---|
31 | S (NXT,SUB1,SUB2)=0
|
---|
32 | I '$D(^TMP($J,"SC CED",DFN,"AFTER")) G DELS
|
---|
33 | F S NXT=$O(^TMP($J,"SC CED",DFN,"AFTER",NXT)) Q:NXT=""!(NXT'?.N) D
|
---|
34 | .S NEW=0
|
---|
35 | .;check clinic added
|
---|
36 | .I '$D(^TMP($J,"SC CED",DFN,"BEFORE",NXT,0)) D NEWC(DFN,NXT) S NEW=1
|
---|
37 | .Q:NEW
|
---|
38 | .S SUB1=0
|
---|
39 | .;change to existing entry
|
---|
40 | .F S SUB1=$O(^TMP($J,"SC CED",DFN,"AFTER",NXT,SUB1)) Q:SUB1=""!(SUB1'?.N) D
|
---|
41 | ..S SUB2=0
|
---|
42 | ..F S SUB2=$O(^TMP($J,"SC CED",DFN,"AFTER",NXT,SUB1,SUB2)) Q:SUB2=""!(SUB2'?.N) D
|
---|
43 | ...I $G(^TMP($J,"SC CED",DFN,"AFTER",NXT,SUB1,SUB2,0))'=$G(^TMP($J,"SC CED",DFN,"BEFORE",NXT,SUB1,SUB2,0)) D CHNG(DFN,NXT,SUB1,SUB2)
|
---|
44 | ;
|
---|
45 | DELS ;look for deletes
|
---|
46 | S CLN=""
|
---|
47 | F S CLN=$O(^TMP($J,"SC CED",DFN,"BEFORE","B",CLN)) Q:CLN="" D
|
---|
48 | .S ENT=$O(^TMP($J,"SC CED",DFN,"BEFORE","B",CLN,""))
|
---|
49 | .Q:ENT=""
|
---|
50 | .I '$D(^TMP($J,"SC CED",DFN,"AFTER","B",CLN,ENT)) D DELT^SCMCEV1(DFN,CLN)
|
---|
51 | Q
|
---|
52 | ;
|
---|
53 | CHNG(DFN,NXT,SUB1,SUB2) ;
|
---|
54 | ;changes made in entry SUB2 of SUB1 entry of entry NXT of "DE" node
|
---|
55 | N FLAG,EDATE,GDATE,CIEN,CHECK,ENROL,CNAME
|
---|
56 | S (ENROL,FLAG,GDATE)=0
|
---|
57 | I $P($G(^TMP($J,"SC CED",DFN,"BEFORE",NXT,SUB1,SUB2,0)),"^")'=$P($G(^TMP($J,"SC CED",DFN,"AFTER",NXT,SUB1,SUB2,0)),"^") S EDATE=$P($G(^TMP($J,"SC CED",DFN,"AFTER",NXT,SUB1,SUB2,0)),"^"),FLAG=1,ENROL=1,EDATE=$P(EDATE,".")
|
---|
58 | ; ^ date only
|
---|
59 | ;enroll date changed
|
---|
60 | I $P($G(^TMP($J,"SC CED",DFN,"BEFORE",NXT,SUB1,SUB2,0)),"^",3)'=$P($G(^TMP($J,"SC CED",DFN,"AFTER",NXT,SUB1,SUB2,0)),"^",3) S GDATE=$P($G(^TMP($J,"SC CED",DFN,"AFTER",NXT,SUB1,SUB2,0)),"^",3),FLAG=1,ENROL=$S(ENROL=1:3,1:2),GDATE=$P(GDATE,".")
|
---|
61 | ; ^ date only
|
---|
62 | ;discharge date changed/added
|
---|
63 | S CHECK=""
|
---|
64 | S CIEN=+$P($G(^TMP($J,"SC CED",DFN,"AFTER",NXT,0)),"^") ;clinic ien
|
---|
65 | S CNAME=$P($G(^SC(CIEN,0)),"^") ;clinic name
|
---|
66 | I $D(EDATE),EDATE=""!(EDATE=0) D DELT^SCMCEV1(DFN,CIEN) Q
|
---|
67 | ; ^ deleted enrollment date
|
---|
68 | I $D(GDATE),'$D(EDATE) S EDATE=$P($G(^TMP($J,"SC CED",DFN,"AFTER",NXT,SUB1,SUB2,0)),"^"),EDATE=$P(EDATE,".") ;date only
|
---|
69 | I $D(GDATE),EDATE=GDATE D DELT^SCMCEV1(DFN,CIEN) Q
|
---|
70 | ; ^ enrolled and discharged on same date
|
---|
71 | I GDATE'="",ENROL=1 S ENROL=3
|
---|
72 | I GDATE'="",ENROL=1 S ENROL=2
|
---|
73 | ;enrol = 1:enrollment ; 2=discharge ; 3=both
|
---|
74 | I FLAG S CHECK=$$CHK^SCMCEV2(DFN,CIEN,ENROL)
|
---|
75 | ;update 404.42?
|
---|
76 | I +CHECK D UPDATE^SCMCEV1(DFN,$P(CHECK,"^",2),EDATE,GDATE,CNAME)
|
---|
77 | Q
|
---|
78 | ;
|
---|
79 | NEWC(DFN,NXT) ;
|
---|
80 | ;new clinic added (enrolled)
|
---|
81 | ;DFN - patient ien
|
---|
82 | ;NXT - ien of "DE" node
|
---|
83 | ;
|
---|
84 | N CIEN,NODE,CHKIT,SUB1,EDATE,GDATE,FLG,CNAME,SCRESTA,SCREST
|
---|
85 | S NODE=$G(^TMP($J,"SC CED",DFN,"AFTER",NXT,0))
|
---|
86 | Q:NODE=""
|
---|
87 | S CIEN=$P(NODE,"^") ;clinic ien
|
---|
88 | S CNAME=$P($G(^SC(+CIEN,0)),"^") ;clinic name
|
---|
89 | S SUB1=$O(^TMP($J,"SC CED",DFN,"AFTER",NXT,0))
|
---|
90 | S SUB2=$O(^TMP($J,"SC CED",DFN,"AFTER",NXT,SUB1,"A"),-1)
|
---|
91 | S EDATE=$P($G(^TMP($J,"SC CED",DFN,"AFTER",NXT,SUB1,SUB2,0)),"^"),FLG=1
|
---|
92 | S EDATE=$P(EDATE,".") ;date only
|
---|
93 | S GDATE=$P($G(^TMP($J,"SC CED",DFN,"AFTER",NXT,SUB1,SUB2,0)),"^",3)
|
---|
94 | S GDATE=$P(GDATE,".") ;date only
|
---|
95 | I GDATE'="" S FLG=3
|
---|
96 | ; -- This fires off MailMessage for new assignment to Clinic
|
---|
97 | S SCREST=$$RESTPT^SCAPMCU4(DFN,DT,"SCRESTA")
|
---|
98 | D:SCREST MAIL^SCMCCON(DFN,.CNAME,1,EDATE,"SCRESTA")
|
---|
99 | ; --- ----
|
---|
100 | S CHKIT=$$CHK^SCMCEV2(DFN,CIEN,FLG)
|
---|
101 | I +CHKIT D ENROLL^SCMCEV1(DFN,$P(CHKIT,"^",2),EDATE,GDATE,CNAME)
|
---|
102 | Q
|
---|
103 | ;
|
---|