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

BSDX31.m

Go to the documentation of this file.
  1. BSDX31 ; IHS/OIT/HMW/MSC/SAT - WINDOWS SCHEDULING RPCS ;
  1. ;;3.0;IHS WINDOWS SCHEDULING;;DEC 09, 2010
  1. ;
  1. ;
  1. NOSHOWD(BSDXY,BSDXAPTID,BSDXNS) ;EP
  1. ;Entry point for debugging
  1. ;
  1. ;D DEBUG^%Serenji("NOSHOW^BSDX31(.BSDXY,BSDXAPTID,BSDXNS)")
  1. Q
  1. ;
  1. NOSHOW(BSDXY,BSDXAPTID,BSDXNS) ;EP
  1. ;Called by BSDX NOSHOW
  1. ;Sets appointment noshow flag in BSDX APPOINTMENT file
  1. ;BSDXAPTID is entry number in BSDX APPOINTMENT file
  1. ;BSDXNS = 1: NOSHOW, 0: CANCEL NOSHO
  1. ;Calls CANCEL^BSDAPI to set noshow data in ^DPT
  1. ;Returns error code in recordset field ERRORID
  1. ;
  1. N BSDXNOD,BSDXPATID,BSDXSTART,BSDXID,BSDXI,BSDXZ,BSDXERR,BSDXMSG,BSDXFDA,BSDXIENS
  1. N BSDXNOEV
  1. S BSDXNOEV=1 ;Don't execute protocol
  1. ;
  1. D ^XBKVAR S X="ETRAP^BSDX31",@^%ZOSF("TRAP")
  1. S BSDXI=0
  1. K ^BSDXTMP($J)
  1. S BSDXY="^BSDXTMP("_$J_")"
  1. S ^BSDXTMP($J,BSDXI)="I00020ERRORID^T00030ERRORTEXT"_$C(30)
  1. S BSDXI=BSDXI+1
  1. TSTART
  1. I '+BSDXAPTID D ERR(0,"BSDX31: Invalid Appointment ID") Q
  1. I '$D(^BSDXAPPT(BSDXAPTID,0)) D ERR(0,"BSDX31: Invalid Appointment ID") Q
  1. S BSDXNS=+BSDXNS
  1. I BSDXNS'=1&(BSDXNS'=0) D ERR(0,"BSDX31: Invalid No Show value") Q
  1. ;
  1. ;Edit BSDX APPOINTMENT entry NOSHOW field
  1. S BSDXNOD=^BSDXAPPT(BSDXAPTID,0)
  1. I BSDXNOD="" D ERR(0,"BSDX31: Invalid Appointment ID") Q
  1. S BSDXPATID=$P(BSDXNOD,U,5)
  1. S BSDXSTART=$P(BSDXNOD,U)
  1. ;
  1. D BSDXNOS(BSDXAPTID,BSDXNS)
  1. I $D(BSDXMSG("DIERR")) S BSDXMSG=$G(BSDXMSG("DIERR",1,"TEXT",1)) D ERR(0,"BSDX31: "_BSDXMSG) Q
  1. ;
  1. S BSDXSC1=$P(BSDXNOD,U,7) ;RESOURCEID
  1. I BSDXSC1]"",$D(^BSDXRES(BSDXSC1,0)) D I $G(BSDXZ)]"" S BSDXERR="BSDX31: APNOSHO Returned: "_BSDXZ D ERR(0,BSDXERR) Q
  1. . S BSDXNOD=^BSDXRES(BSDXSC1,0)
  1. . S BSDXSC1=$P(BSDXNOD,U,4) ;HOSPITAL LOCATION
  1. . I BSDXSC1]"",$D(^SC(BSDXSC1,0)) D APNOSHO(.BSDXZ,BSDXSC1,BSDXPATID,BSDXSTART,BSDXNS)
  1. ;
  1. TCOMMIT
  1. S BSDXI=BSDXI+1
  1. S ^BSDXTMP($J,BSDXI)="1^"_$C(30)
  1. S BSDXI=BSDXI+1
  1. S ^BSDXTMP($J,BSDXI)=$C(31)
  1. Q
  1. ;
  1. APNOSHO(BSDXZ,BSDXSC1,BSDXDFN,BSDXSD,BSDXNS) ;
  1. ; update file 2 info
  1. ;Set noshow for patient BSDXDFN in clinic BSDXSC1
  1. ;at time BSDXSD
  1. N BSDXC,%H,BSDXCDT,BSDXIEN
  1. N BSDXIENS,BSDXFDA,BSDXMSG
  1. S %H=$H D YMD^%DTC
  1. S BSDXCDT=X+%
  1. ;
  1. S BSDXIENS=BSDXSD_","_BSDXDFN_","
  1. I +BSDXNS D
  1. . S BSDXFDA(2.98,BSDXIENS,3)="N"
  1. . S BSDXFDA(2.98,BSDXIENS,14)=DUZ
  1. . S BSDXFDA(2.98,BSDXIENS,15)=BSDXCDT
  1. E D
  1. . S BSDXFDA(2.98,BSDXIENS,3)=""
  1. . S BSDXFDA(2.98,BSDXIENS,14)=""
  1. . S BSDXFDA(2.98,BSDXIENS,15)=""
  1. K BSDXIEN
  1. D UPDATE^DIE("","BSDXFDA","BSDXIEN","BSDXMSG")
  1. S BSDXZ=$G(BSDXMSG("DIERR",1,"TEXT",1))
  1. Q
  1. ;
  1. BSDXNOS(BSDXAPTID,BSDXNS) ;
  1. ;
  1. N BSDXFDA,BSDXIENS
  1. S BSDXIENS=BSDXAPTID_","
  1. S BSDXFDA(9002018.4,BSDXIENS,.1)=BSDXNS ;NOSHOW
  1. D FILE^DIE("","BSDXFDA","BSDXMSG")
  1. ;
  1. Q
  1. ;
  1. NOSEVT(BSDXPAT,BSDXSTART,BSDXSC) ;EP Called by BSDX NOSHOW APPOINTMENT event
  1. ;when appointments NOSHOW via PIMS interface.
  1. ;Propagates NOSHOW to BSDXAPPT and raises refresh event to running GUI clients
  1. ;
  1. Q:+$G(BSDXNOEV)
  1. Q:'+$G(BSDXSC)
  1. Q:$G(SDATA("AFTER","STATUS"))["AUTO RE-BOOK"
  1. N BSDXSTAT,BSDXFOUND,BSDXRES
  1. S BSDXSTAT=1
  1. S:$G(SDATA("BEFORE","STATUS"))["NO-SHOW" BSDXSTAT=0
  1. S BSDXFOUND=0
  1. I $D(^BSDXRES("ALOC",BSDXSC)) S BSDXRES=$O(^BSDXRES("ALOC",BSDXSC,0)) S BSDXFOUND=$$NOSEVT1(BSDXRES,BSDXSTART,BSDXPAT,BSDXSTAT)
  1. I BSDXFOUND D NOSEVT3(BSDXRES) Q
  1. I $D(^BXDXRES("ASSOC",BSDXSC)) S BSDXRES=$O(^BSDXRES("ASSOC",BSDXSC,0)) S BSDXFOUND=$$NOSEVT1(BSDXRES,BSDXSTART,BSDXPAT,BSDXSTAT)
  1. I BSDXFOUND D NOSEVT3(BSDXRES)
  1. Q
  1. ;
  1. NOSEVT1(BSDXRES,BSDXSTART,BSDXPAT,BSDXSTAT) ;
  1. ;Get appointment id in BSDXAPT
  1. ;If found, call BSDXNOS(BSDXAPPT) and return 1
  1. ;else return 0
  1. N BSDXFOUND,BSDXAPPT
  1. S BSDXFOUND=0
  1. Q:'+$G(BSDXRES) BSDXFOUND
  1. Q:'$D(^BSDXAPPT("ARSRC",BSDXRES,BSDXSTART)) BSDXFOUND
  1. S BSDXAPPT=0 F S BSDXAPPT=$O(^BSDXAPPT("ARSRC",BSDXRES,BSDXSTART,BSDXAPPT)) Q:'+BSDXAPPT D Q:BSDXFOUND
  1. . S BSDXNOD=$G(^BSDXAPPT(BSDXAPPT,0)) Q:BSDXNOD=""
  1. . I $P(BSDXNOD,U,5)=BSDXPAT,$P(BSDXNOD,U,12)="" S BSDXFOUND=1 Q
  1. I BSDXFOUND,+$G(BSDXAPPT) D BSDXNOS(BSDXAPPT,BSDXSTAT)
  1. Q BSDXFOUND
  1. ;
  1. NOSEVT3(BSDXRES) ;
  1. ;Call RaiseEvent to notify GUI clients
  1. ;
  1. N BSDXRESN
  1. S BSDXRESN=$G(^BSDXRES(BSDXRES,0))
  1. Q:BSDXRESN=""
  1. S BSDXRESN=$P(BSDXRESN,"^")
  1. D EVENT^BMXMEVN("BSDX SCHEDULE",BSDXRESN)
  1. Q
  1. ;
  1. ;
  1. ERR(BSDXERID,ERRTXT) ;Error processing
  1. S:'+$G(BSDXI) BSDXI=999999
  1. S BSDXI=BSDXI+1
  1. TROLLBACK
  1. S ^BSDXTMP($J,BSDXI)=BSDXERID_"^"_ERRTXT_$C(30)
  1. S BSDXI=BSDXI+1
  1. S ^BSDXTMP($J,BSDXI)=$C(31)
  1. Q
  1. ;
  1. ETRAP ;EP Error trap entry
  1. D ^%ZTER
  1. I '$D(BSDXI) N BSDXI S BSDXI=999999
  1. S BSDXI=BSDXI+1
  1. D ERR(0,"BSDX31 Error: "_$G(%ZTERROR))
  1. Q
  1. ;
  1. IMHERE(BSDXRES) ;EP
  1. ;Entry point for BSDX IM HERE remote procedure
  1. S BSDXRES=1
  1. Q
  1. ;