| 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 | ; | 
|---|