Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: SCMCEV3

SCMCEV3.m

Go to the documentation of this file.
  1. SCMCEV3 ;ALB/CMM - TEAM EVENT DRIVER UTILITIES ; 03/20/96
  1. ;;5.3;Scheduling;**41**;AUG 13, 1993
  1. ;
  1. INVOKE(DFN) ;envokes Team Event Driver
  1. I '$D(^TMP($J,"SC CED",DFN,"BEFORE"))!('$D(^TMP($J,"SC CED",DFN,"AFTER"))) G EXIT
  1. S X=+$O(^ORD(101,"B","SC CLINIC ENROLL/DISCHARGE EVENT DRIVER",0))_";ORD(101,"
  1. D EN^XQOR
  1. EXIT ;
  1. K ^TMP($J,"SC CED",DFN,"BEFORE"),^TMP($J,"SC CED",DFN,"AFTER"),X
  1. Q
  1. ;
  1. BEFORE(DFN) ;
  1. ;get before picture of ^DPT(DFN,"DE") node
  1. ;
  1. K ^TMP($J,"SC CED",DFN,"BEFORE")
  1. MERGE ^TMP($J,"SC CED",DFN,"BEFORE")=^DPT(DFN,"DE")
  1. I '$D(^TMP($J,"SC CED",DFN,"BEFORE")) S ^TMP($J,"SC CED",DFN,"BEFORE")=""
  1. ; ^ not enrolled in any clinics ever
  1. Q
  1. ;
  1. AFTER(DFN) ;
  1. ;get after picture of ^DPT(DFN,"DE") node
  1. ;
  1. K ^TMP($J,"SC CED",DFN,"AFTER")
  1. MERGE ^TMP($J,"SC CED",DFN,"AFTER")=^DPT(DFN,"DE")
  1. Q
  1. ;
  1. COMPARE(DFN) ;team event driver
  1. ;compare before and after of DFN's "DE" node
  1. N NXT,SUB1,SUB2,NEW,CLN,ENT
  1. S (NXT,SUB1,SUB2)=0
  1. I '$D(^TMP($J,"SC CED",DFN,"AFTER")) G DELS
  1. F S NXT=$O(^TMP($J,"SC CED",DFN,"AFTER",NXT)) Q:NXT=""!(NXT'?.N) D
  1. .S NEW=0
  1. .;check clinic added
  1. .I '$D(^TMP($J,"SC CED",DFN,"BEFORE",NXT,0)) D NEWC(DFN,NXT) S NEW=1
  1. .Q:NEW
  1. .S SUB1=0
  1. .;change to existing entry
  1. .F S SUB1=$O(^TMP($J,"SC CED",DFN,"AFTER",NXT,SUB1)) Q:SUB1=""!(SUB1'?.N) D
  1. ..S SUB2=0
  1. ..F S SUB2=$O(^TMP($J,"SC CED",DFN,"AFTER",NXT,SUB1,SUB2)) Q:SUB2=""!(SUB2'?.N) D
  1. ...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)
  1. ;
  1. DELS ;look for deletes
  1. S CLN=""
  1. F S CLN=$O(^TMP($J,"SC CED",DFN,"BEFORE","B",CLN)) Q:CLN="" D
  1. .S ENT=$O(^TMP($J,"SC CED",DFN,"BEFORE","B",CLN,""))
  1. .Q:ENT=""
  1. .I '$D(^TMP($J,"SC CED",DFN,"AFTER","B",CLN,ENT)) D DELT^SCMCEV1(DFN,CLN)
  1. Q
  1. ;
  1. CHNG(DFN,NXT,SUB1,SUB2) ;
  1. ;changes made in entry SUB2 of SUB1 entry of entry NXT of "DE" node
  1. N FLAG,EDATE,GDATE,CIEN,CHECK,ENROL,CNAME
  1. S (ENROL,FLAG,GDATE)=0
  1. 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,".")
  1. ; ^ date only
  1. ;enroll date changed
  1. 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,".")
  1. ; ^ date only
  1. ;discharge date changed/added
  1. S CHECK=""
  1. S CIEN=+$P($G(^TMP($J,"SC CED",DFN,"AFTER",NXT,0)),"^") ;clinic ien
  1. S CNAME=$P($G(^SC(CIEN,0)),"^") ;clinic name
  1. I $D(EDATE),EDATE=""!(EDATE=0) D DELT^SCMCEV1(DFN,CIEN) Q
  1. ; ^ deleted enrollment date
  1. I $D(GDATE),'$D(EDATE) S EDATE=$P($G(^TMP($J,"SC CED",DFN,"AFTER",NXT,SUB1,SUB2,0)),"^"),EDATE=$P(EDATE,".") ;date only
  1. I $D(GDATE),EDATE=GDATE D DELT^SCMCEV1(DFN,CIEN) Q
  1. ; ^ enrolled and discharged on same date
  1. I GDATE'="",ENROL=1 S ENROL=3
  1. I GDATE'="",ENROL=1 S ENROL=2
  1. ;enrol = 1:enrollment ; 2=discharge ; 3=both
  1. I FLAG S CHECK=$$CHK^SCMCEV2(DFN,CIEN,ENROL)
  1. ;update 404.42?
  1. I +CHECK D UPDATE^SCMCEV1(DFN,$P(CHECK,"^",2),EDATE,GDATE,CNAME)
  1. Q
  1. ;
  1. NEWC(DFN,NXT) ;
  1. ;new clinic added (enrolled)
  1. ;DFN - patient ien
  1. ;NXT - ien of "DE" node
  1. ;
  1. N CIEN,NODE,CHKIT,SUB1,EDATE,GDATE,FLG,CNAME,SCRESTA,SCREST
  1. S NODE=$G(^TMP($J,"SC CED",DFN,"AFTER",NXT,0))
  1. Q:NODE=""
  1. S CIEN=$P(NODE,"^") ;clinic ien
  1. S CNAME=$P($G(^SC(+CIEN,0)),"^") ;clinic name
  1. S SUB1=$O(^TMP($J,"SC CED",DFN,"AFTER",NXT,0))
  1. S SUB2=$O(^TMP($J,"SC CED",DFN,"AFTER",NXT,SUB1,"A"),-1)
  1. S EDATE=$P($G(^TMP($J,"SC CED",DFN,"AFTER",NXT,SUB1,SUB2,0)),"^"),FLG=1
  1. S EDATE=$P(EDATE,".") ;date only
  1. S GDATE=$P($G(^TMP($J,"SC CED",DFN,"AFTER",NXT,SUB1,SUB2,0)),"^",3)
  1. S GDATE=$P(GDATE,".") ;date only
  1. I GDATE'="" S FLG=3
  1. ; -- This fires off MailMessage for new assignment to Clinic
  1. S SCREST=$$RESTPT^SCAPMCU4(DFN,DT,"SCRESTA")
  1. D:SCREST MAIL^SCMCCON(DFN,.CNAME,1,EDATE,"SCRESTA")
  1. ; --- ----
  1. S CHKIT=$$CHK^SCMCEV2(DFN,CIEN,FLG)
  1. I +CHKIT D ENROLL^SCMCEV1(DFN,$P(CHKIT,"^",2),EDATE,GDATE,CNAME)
  1. Q
  1. ;