Ignore:
Timestamp:
Jun 22, 2012, 7:11:05 PM (12 years ago)
Author:
Sam Habiel
Message:

Refactored BSDX08 and BSDX29 routines; plus new UT routine BSDXUT1

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Scheduling/trunk/m/BSDX08.m

    r1454 r1455  
    1 BSDX08  ; VW/UJO/SMH - WINDOWS SCHEDULING RPCS ; 6/21/12 4:49pm
    2         ;;1.6;BSDX;;Aug 31, 2011;Build 18
     1BSDX08  ; VW/UJO/SMH - WINDOWS SCHEDULING RPCS ; 6/22/12 4:19pm
     2        ;;1.7T1;BSDX;;Aug 31, 2011;Build 18
    33        ;
    44        ; Original by HMW. New Written by Sam Habiel. Licensed under LGPL.
     
    7171        L +^BSDXAPPT(BSDXAPTID):5 I '$T D ERR(BSDXI,"-1~BSDX08: Appt record is locked. Please contact technical support.") Q
    7272        ;
    73         ;Restartable Transaction; restore paramters when starting.
    74         ; (Params restored are what's passed here + BSDXI)
    75         TSTART (BSDXY,BSDXAPTID,BSDXTYP,BSDXCR,BSDXNOT,BSDXI):T="BSDX CANCEL APPOINTEMENT^BSDX08"
    76         ;
    7773        ; Turn off SDAM APPT PROTOCOL BSDX Entries
    7874        N BSDXNOEV
     
    8177        ;;;test for error inside transaction. See if %ZTER works
    8278        I $G(BSDXDIE) S X=1/0
    83         ;;;test
    84         ;;;test for TRESTART
    85         I $G(BSDXRESTART) K BSDXRESTART tRESTART
    86         ;;;test
    8779        ;
    8880        ; Check appointment ID and whether it exists
    8981        I '+BSDXAPTID D ERR(BSDXI,"-2~BSDX08: Invalid Appointment ID") Q
    9082        I '$D(^BSDXAPPT(BSDXAPTID,0)) D ERR(BSDXI,"-3~BSDX08: Invalid Appointment ID") Q
    91         ;
     83        ; 
    9284        ; Start Processing:
    93         ; First, add cancellation date to appt entry in BSDX APPOINTMENT
     85        ; First, get data
    9486        N BSDXNOD S BSDXNOD=^BSDXAPPT(BSDXAPTID,0) ; BSDX Appt Node
    9587        N BSDXPATID S BSDXPATID=$P(BSDXNOD,U,5) ; Patient ID
    9688        N BSDXSTART S BSDXSTART=$P(BSDXNOD,U) ; Start Time
    97         D BSDXCAN(BSDXAPTID)  ; Add a cancellation date in BSDX APPOINTMENT
    98         ;
    99         ; Second, cancel appt in "S" nodes in file 2 and 44, then update Legacy PIMS Availability
     89        ;
     90        ; Check the resource ID and whether it exists
    10091        N BSDXSC1 S BSDXSC1=$P(BSDXNOD,U,7) ;RESOURCEID
    10192        ; If the resouce id doesn't exist...
    10293        I BSDXSC1="" D ERR(BSDXI,"-4~BSDX08: Cancelled appointment does not have a Resouce ID") QUIT
    10394        I '$D(^BSDXRES(BSDXSC1,0)) D ERR(BSDXI,"-5~BSDX08: Resouce ID does not exist in BSDX RESOURCE") QUIT
     95        ;
     96        ; Process PIMS issues first:
     97        ; cancel appt in "S" nodes in file 2 and 44, then update Legacy PIMS Availability
    10498        ; Get zero node of resouce
    105         S BSDXNOD=^BSDXRES(BSDXSC1,0)
     99        N BSDXNOD S BSDXNOD=^BSDXRES(BSDXSC1,0)
    106100        ; Get Hosp location
    107101        N BSDXLOC S BSDXLOC=$P(BSDXNOD,U,4)
    108102        ; Error indicator for Hosp Location filing for getting out of routine
    109103        N BSDXERR S BSDXERR=0
     104        ; For BSDXC
     105        N BSDXC
    110106        ; Only file in 2/44 if there is an associated hospital location
    111107        I BSDXLOC D  QUIT:BSDXERR
    112         . I '$D(^SC(BSDXLOC,0)) S BSDXERR=1 D ERR(BSDXI,"-6~BSDX08: Invalid Hosp Location stored in Database") QUIT
    113         . ; Get the IEN of the appointment in the "S" node of ^SC
    114         . N BSDXSCIEN
    115         . S BSDXSCIEN=$$SCIEN^BSDXAPI(BSDXPATID,BSDXLOC,BSDXSTART)
    116         . I BSDXSCIEN="" S BSDXERR=1 D ERR(BSDXI,"-7~BSDX08: Patient does not have an appointment in PIMS Clinic") QUIT
    117         . ; Get the appointment node
    118         . S BSDXNOD=$G(^SC(BSDXLOC,"S",BSDXSTART,1,BSDXSCIEN,0))
    119         . I BSDXNOD="" S BSDXERR=1 D ERR(BSDXI,"-8^BSDX08: Unable to find associated PIMS appointment for this patient") QUIT
    120         . N BSDXLEN S BSDXLEN=$P(BSDXNOD,U,2)
     108        . S BSDXC("PAT")=BSDXPATID
     109        . S BSDXC("CLN")=BSDXLOC
     110        . S BSDXC("TYP")=BSDXTYP
     111        . S BSDXC("ADT")=BSDXSTART
     112        . S BSDXC("CDT")=$$NOW^XLFDT()
     113        . S BSDXC("NOT")=BSDXNOT
     114        . S:'+$G(BSDXCR) BSDXCR=11 ;Other
     115        . S BSDXC("CR")=BSDXCR
     116        . S BSDXC("USR")=DUZ
     117        . ;
     118        . S BSDXERR=$$CANCELCK^BSDXAPI(.BSDXC) ; 0 or 1^error message
     119        . I BSDXERR D ERR(BSDXI,"-9^BSDX08: BSDXAPI returned an error: "_$P(BSDXERR,U,2)) QUIT
     120        . ;
     121        . N BSDXLEN S BSDXLEN=$$APPLEN^BSDXAPI(BSDXPATID,BSDXLOC,BSDXSTART)
     122        . ; DEBUG
     123        . I 'BSDXLEN S $EC=",U1,"
     124        . ; DEBUG
    121125        . ; Cancel through BSDXAPI
    122         . N BSDXZ
    123         . D APCAN(.BSDXZ,BSDXLOC,BSDXPATID,BSDXSTART)
    124         . I +BSDXZ>0 S BSDXERR=1 D ERR(BSDXI,"-9^BSDX08: BSDXAPI returned an error: "_$P(BSDXZ,U,2)) QUIT
     126        . S BSDXERR=$$CANCEL^BSDXAPI(.BSDXC)
     127        . I BSDXERR=1 D ERR(BSDXI,"-9^BSDX08: BSDXAPI returned an error: "_$P(BSDXZ,U,2)) QUIT
    125128        . ; Update Legacy PIMS clinic Availability
    126129        . D AVUPDT(BSDXLOC,BSDXSTART,BSDXLEN)
    127130        ;
    128         TCOMMIT
     131        D BSDXCAN(BSDXAPTID)  ; Add a cancellation date in BSDX APPOINTMENT
     132        ;
    129133        L -^BSDXAPPT(BSDXAPTID)
    130134        S BSDXI=BSDXI+1
     
    180184        Q
    181185        ;
    182 APCAN(BSDXZ,BSDXLOC,BSDXDFN,BSDXSD)             ;
    183         ;Cancel appointment for patient BSDXDFN in clinic BSDXSC1
    184         ;at time BSDXSD
    185         N BSDXC,%H
    186         S BSDXC("PAT")=BSDXPATID
    187         S BSDXC("CLN")=BSDXLOC
    188         S BSDXC("TYP")=BSDXTYP
    189         S BSDXC("ADT")=BSDXSD
    190         S %H=$H D YMD^%DTC
    191         S BSDXC("CDT")=X+%
    192         S BSDXC("NOT")=BSDXNOT
    193         S:'+$G(BSDXCR) BSDXCR=11 ;Other
    194         S BSDXC("CR")=BSDXCR
    195         S BSDXC("USR")=DUZ
    196         ;
    197         S BSDXZ=$$CANCEL^BSDXAPI(.BSDXC)
    198         Q
    199         ;
    200186BSDXCAN(BSDXAPTID)      ;
    201187        ;Cancel BSDX APPOINTMENT entry
     
    231217        Q:'$D(^BSDXAPPT("ARSRC",BSDXRES,BSDXSTART)) BSDXFOUND
    232218        S BSDXAPPT=0 F  S BSDXAPPT=$O(^BSDXAPPT("ARSRC",BSDXRES,BSDXSTART,BSDXAPPT)) Q:'+BSDXAPPT  D  Q:BSDXFOUND
     219        . N BSDXNOD
    233220        . S BSDXNOD=$G(^BSDXAPPT(BSDXAPPT,0)) Q:BSDXNOD=""
    234221        . I $P(BSDXNOD,U,5)=BSDXPAT,$P(BSDXNOD,U,12)="" S BSDXFOUND=1 Q
     
    250237        S BSDXI=BSDXI+1
    251238        S BSDXERR=$TR(BSDXERR,"^","~")
    252         I $TL>0 TROLLBACK
    253239        S ^BSDXTMP($J,BSDXI)=BSDXERR_$C(30)
    254240        S BSDXI=BSDXI+1
     
    259245ETRAP   ;EP Error trap entry
    260246        N $ET S $ET="D ^%ZTER HALT"  ; Emergency Error Trap
    261         ; Rollback, otherwise ^XTER will be empty from future rollback
    262         I $TL>0 TROLLBACK
    263247        D ^%ZTER
    264248        S $EC=""  ; Clear Error
Note: See TracChangeset for help on using the changeset viewer.