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

SCMCMU3.m

Go to the documentation of this file.
  1. SCMCMU3 ;ALB/MJK - Discharge Patient from Clinic ; 1/27/05 9:55am
  1. ;;5.3;Scheduling;**148,157,346,1015**;AUG 13, 1993;Build 21
  1. ;
  1. EN(DFN,SCCLN,SCDATE,SCREA) ; -- main entry point
  1. N SCENR,SCENR0,SCRET
  1. S SCENR=+$O(^DPT(DFN,"DE","B",+SCCLN,0))
  1. ;
  1. ; -- quit pateint never enrolled in clinic
  1. IF 'SCENR G ENQ
  1. ;
  1. S SCENR0=$G(^DPT(DFN,"DE",SCENR,0))
  1. ;
  1. ; -- quit if enrollment is currently inactive
  1. IF $P(SCENR0,U,2)'="" G ENQ
  1. ;
  1. D BEFORE^SCMCEV3(DFN) ;setup before values
  1. ;
  1. S SCRET=$$DISCH(DFN,SCCLN,SCDATE,SCENR,SCREA)
  1. IF SCRET=1 D
  1. . D AFTER^SCMCEV3(DFN) ;setup after values
  1. . D INVOKE^SCMCEV3(DFN) ; call event driver
  1. ENQ Q $G(SCRET,$$ERR(3))
  1. ;
  1. DISCH(DFN,SCCLN,SCDATE,SCENR,SCREA) ; -- discharge from clinic
  1. ;initialize variables
  1. N SCDT,SCDT0,SCDAT,SCDAT0,DIE,DA,DR,Y,SCNODE,SCRET,SCARRAY,SCCOUNT
  1. K ^TMP($J,"SDAMA301")
  1. ; -- check for future apps
  1. S SCDT=DT+1
  1. I $G(SCCLN)'="",$G(DFN)'="" D
  1. .;setup call to SDAPI to retrieve a single future appt
  1. .S SCARRAY(1)=SCDT,SCARRAY(2)=SCCLN,SCARRAY(3)="R;I"
  1. .S SCARRAY(4)=DFN,SCARRAY("FLDS")=4,SCARRAY("MAX")=1
  1. .S SCCOUNT=$$SDAPI^SDAMA301(.SCARRAY)
  1. .K ^TMP($J,"SDAMA301")
  1. ;if a future appointment returned
  1. I SCCOUNT>0 D
  1. .S SCRET=2
  1. ;if no future appointments exist
  1. I SCCOUNT'>0 D
  1. .S SCDAT=0
  1. .F S SCDAT=$O(^DPT(DFN,"DE",SCENR,1,SCDAT)) Q:'SCDAT D
  1. .. S SCDAT0=$G(^DPT(DFN,"DE",SCENR,1,SCDAT,0))
  1. .. I $P(SCDAT0,U,3)]"" Q
  1. .. S SCNODE=$NA(^DPT(DFN,"DE",SCENR,1,SCDAT))
  1. .. D LOCK(SCNODE)
  1. .. S DA(2)=DFN,DA(1)=SCENR
  1. .. S DIE="^DPT("_DFN_",""DE"","_SCENR_",1,",DA=SCDAT
  1. .. S DR="3////"_SCDATE_";4////"_SCREA
  1. .. D ^DIE
  1. .. D UNLOCK(SCNODE)
  1. .. S SCRET=1
  1. ;
  1. DISCHQ Q $$ERR($G(SCRET,3))
  1. ;
  1. LOCK(NODE) ; -- lock node
  1. F L +@NODE:5 IF $T Q
  1. Q
  1. ;
  1. UNLOCK(NODE) ; -- unlock node
  1. L -@NODE
  1. Q
  1. ;
  1. ERR(CODE) ;
  1. Q $P($TEXT(RET+CODE),";;",2)
  1. ;
  1. ;
  1. ; piece [ return code ^ error text ]
  1. RET ; -- return values
  1. ;;1^Patient successfully discharged from clinic
  1. ;;2^Patient has future appointments in clinic
  1. ;;3^No active enrollment data for clinic
  1. ;
  1. TEST ;
  1. W !!,$$EN(7170643,446,DT,"TEST FROM SCMCMU3")
  1. Q