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/BSDX29.m

    r1187 r1455  
    1 BSDX29  ; IHS/OIT/HMW - WINDOWS SCHEDULING RPCS ; 4/28/11 10:25am
    2         ;;1.6T2;BSDX;;May 16, 2011
     1BSDX29  ; IHS/OIT/HMW - WINDOWS SCHEDULING RPCS ; 6/22/12 1:46pm
     2        ;;1.7T1;BSDX;;Aug 31, 2011;Build 18
    33        ; Licensed under LGPL
    44        ;
     
    88        ; v1.42 by WV/SMH on 3101023
    99        ; - Transaction moved; now restartable too.
    10         ; --> Thanks to Zach Gonzalez and Rick Marshall.
    1110        ; - Refactoring of major portions of routine
     11        ; v1.7 by VEN/SMH on 3120622
     12        ; - Removed transaction code; Locks added in update to prevent concurrent
     13        ;   update
    1214        ;
    1315BSDXCPD(BSDXY,BSDXRES,BSDX44,BSDXBEG,BSDXEND)   ;EP
    1416        ;Entry point for debugging
    1517        ;
    16         D DEBUG^%Serenji("BSDXCP^BSDX29(.BSDXY,BSDXRES,BSDX44,BSDXBEG,BSDXEND)")
     18        ;D DEBUG^%Serenji("BSDXCP^BSDX29(.BSDXY,BSDXRES,BSDX44,BSDXBEG,BSDXEND)")
    1719        Q
    1820        ;
     
    2224           ;Called by RPC: BSDX COPY APPOINTMENTS
    2325        ;
    24            ; Parameters:
    25            ; - BSDXY: Global Return
    26            ; - BSDXRES: BSDX RESOURCE to copy appointments to
    27            ; - BSDX44: Hospital Location IEN to copy appointments from
    28            ; - BSDXBEG: Beginning Date in FM Format
    29            ; - BSDXEND: End Date in FM Format
    30            ;
     26        ; Parameters:
     27        ; - BSDXY: Global Return
     28        ; - BSDXRES: BSDX RESOURCE to copy appointments to
     29        ; - BSDX44: Hospital Location IEN to copy appointments from
     30        ; - BSDXBEG: Beginning Date in FM Format
     31        ; - BSDXEND: End Date in FM Format
     32        ;
    3133        ;Returns ADO Recordset containing TASK_NUMBER and ERRORID
    3234        ;
    33            ; Return Array
     35        ; Return Array
    3436        S BSDXY=$NA(^BSDXTMP($J))
    35            K ^BSDXTMP($J)
    36            ; $ET
    37            N $ET S $ET="G ETRAP^BSDX29"
     37        K ^BSDXTMP($J)
     38        ; $ET
     39        N $ET S $ET="G ETRAP^BSDX29"
    3840        ; Counter
    39            N BSDXI S BSDXI=0
    40            ; Header Node
     41        N BSDXI S BSDXI=0
     42        ; Header Node
    4143        S ^BSDXTMP($J,0)="T00010TASK_NUMBER^T00100ERRORID"_$C(30)
    4244        ;
    43            ; Make dates inclusive; add 1 to FM dates
    44            S BSDXBEG=BSDXBEG-1
    45         S BSDXEND=BSDXEND+1
    46         ;
    47            ; Taskman variables
    48            N ZTSK,ZTRTN,ZTDTH,ZTDESC,ZTSAVE
     45        ; Make dates inclusive; add 1 to FM dates
     46        S BSDXBEG=$$FMADD^XLFDT(BSDXBEG,-1)
     47        S BSDXEND=$$FMADD^XLFDT(BSDXEND,+1)
     48        ;
     49        ; Taskman variables
     50        N ZTSK,ZTRTN,ZTDTH,ZTDESC,ZTSAVE,ZTIO
    4951        ; Task Load
    50         S ZTRTN="ZTM^BSDX29",ZTDTH=$H,ZTDESC="COPY PATIENT APPTS"
     52        S ZTRTN="ZTM^BSDX29",ZTDTH=$H,ZTDESC="COPY PATIENT APPTS",ZTIO=""
    5153        S ZTSAVE("BSDXBEG")="",ZTSAVE("BSDXEND")="",ZTSAVE("BSDX44")="",ZTSAVE("BSDXRES")=""
    5254        D ^%ZTLOAD
     
    6264        ;
    6365ZTM     ;EP - Taskman entry point
    64            ; Variables set up in ZTSAVE above
    65            ;
     66        ; Variables set up in ZTSAVE above
     67        ;
    6668        Q:'$D(ZTSK)
    67            ; $ET
    68            N $ET S $ET="G ZTMERR^BSDX29"
    69         ; Txn
    70            TSTART (BSDXBEG,BSDXEND,BSDX44,BSDXRES):T="BSDX COPY APPOINTMENT^BSDX29"
     69        ;
     70        ; $ET
     71        N $ET S $ET="G ZTMERR^BSDX29"
     72        ;
    7173        ;$O through ^SC(BSDX44,"S",
    7274        N BSDXCNT S BSDXCNT=0  ; Count of Copied Appointments
    73            N BSDXQUIT S BSDXQUIT=0  ; Quit Flag to be retrieved from an external proc
     75        N BSDXQUIT S BSDXQUIT=0  ; Quit Flag to be retrieved from an external proc
    7476        ; Set Count
    75            S ^BSDXTMP("BSDXCOPY",ZTSK)=BSDXCNT
     77        S ^BSDXTMP("BSDXCOPY",ZTSK)=BSDXCNT
    7678        ; Loop through dates here.
    77            F  S BSDXBEG=$O(^SC(BSDX44,"S",BSDXBEG)) Q:'+BSDXBEG  Q:BSDXBEG>BSDXEND  Q:BSDXQUIT  D
    78            . ; Loop through Entries in each date in the subsubfile.
    79            . ; Quit if we are at the end or if a remote process requests a quit.
    80            . N BSDXIEN S BSDXIEN=0
     79        F  S BSDXBEG=$O(^SC(BSDX44,"S",BSDXBEG)) Q:'+BSDXBEG  Q:BSDXBEG>BSDXEND  Q:BSDXQUIT  D
     80        . ; Loop through Entries in each date in the subsubfile.
     81        . ; Quit if we are at the end or if a remote process requests a quit.
     82        . N BSDXIEN S BSDXIEN=0
    8183        . F  S BSDXIEN=$O(^SC(BSDX44,"S",BSDXBEG,1,BSDXIEN)) Q:'+BSDXIEN  Q:BSDXQUIT  D
    8284        . . N BSDXNOD S BSDXNOD=$G(^SC(BSDX44,"S",BSDXBEG,1,BSDXIEN,0)) ; Node
    8385        . . Q:'+BSDXNOD  ; Quit if no node
    8486        . . N BSDXCAN S BSDXCAN=$P(BSDXNOD,U,9) ; Cancel flag
    85         . . Q:BSDXCAN="C"  ; Quit if appt cancelled
    86            . . N BSDXPAT S BSDXPAT=$P(BSDXNOD,U) ; Patient
    87            . . N BSDXLEN S BSDXLEN=$P(BSDXNOD,U,2) ;duration in minutes
     87        . . Q:BSDXCAN="C"  ; Quit if appt cancelled -- smh - this will never happen; cancelled appointments are normally removed from 44
     88        . . N BSDXPAT S BSDXPAT=$P(BSDXNOD,U) ; Patient
     89        . . N BSDXLEN S BSDXLEN=$P(BSDXNOD,U,2) ;duration in minutes
    8890        . . N BSDXCLRK S BSDXCLRK=$P(BSDXNOD,U,6) ;appt made by (clerk)
    8991        . . N BSDXMADE S BSDXMADE=$P(BSDXNOD,U,7) ;date appt made
     
    9193        . . S BSDXCNT=BSDXCNT+$$XFER(BSDXRES,BSDXBEG,BSDXPAT,BSDXLEN,BSDXCLRK,BSDXMADE,BSDXNOTE)
    9294        . . I +BSDXCNT,BSDXCNT#10=0 S ^BSDXTMP("BSDXCOPY",ZTSK)=BSDXCNT_" records copied." ;every 10th record
    93         . . I $D(^BSDXTMP("BSDXCOPY",ZTSK,"CANCEL")) S BSDXQUIT=1 ;Check for cancel flag
    94         . . Q
    95         . Q
    96         I 'BSDXQUIT TCOMMIT
    97         E  TROLLBACK
     95        . . I $D(^BSDXTMP("BSDXCOPY",ZTSK,"CANCEL")) S BSDXQUIT=1 ;Check for cancel flag ; smh - not used currently (v1.7)
     96        ;
     97        ;
    9898        S ^BSDXTMP("BSDXCOPY",ZTSK)=$S(BSDXQUIT:"Cancelled.  No records copied.",1:"Finished.  "_BSDXCNT_" records copied.")
    9999        Q
     
    101101ZTMERR  ; For now, error from TM is only in trap; not returned to client.
    102102        N $ET S $ET="D ^%ZTER HALT" ; Emergency Error Trap
    103            ; Rollback before logging the error
    104            I $TL>0 TROLLBACK
    105103        D ^%ZTER
    106            S $EC="" ; Clear Error
     104        S $EC="" ; Clear Error
    107105        QUIT
    108106        ;
     
    112110        ;Return 1 if record copied, otherwise 0
    113111        ;
     112        N REF
     113        S REF=$NA(^BSDXLOCK(BSDXRES,BSDXBEG,BSDXPAT)) ; This combo is unique
     114        L +@REF:0  E  Q 0
     115        ;
    114116        ;$O Thru ^BSDXAPPT to determine if this appt already added
    115         N BSDXEND,BSDXIEN,BSDXFND,BSDXPAT2
     117        N BSDXEND,BSDXIEN,BSDXFND,BSDXPAT2,BSDXNOD
    116118        S BSDXIEN=0,BSDXFND=0
    117119        F  S BSDXIEN=$O(^BSDXAPPT("ARSRC",BSDXRES,BSDXBEG,BSDXIEN)) Q:'+BSDXIEN  D  Q:BSDXFND
     
    122124        . I BSDXPAT2=BSDXPAT S BSDXFND=1
    123125        . Q
    124         Q:BSDXFND 0
     126        I BSDXFND L -@REF Q 0
    125127        ;
    126128        ;Add to BSDX APPOINTMENT
     
    128130        ;Calculate ending time from beginning time and duration.
    129131        S BSDXEND=$$ADDMIN(BSDXBEG,BSDXLEN)
     132        N BSDXFDA,BSDXIENS
    130133        S BSDXIENS="+1,"
    131134        S BSDXFDA(9002018.4,BSDXIENS,.01)=BSDXBEG
     
    137140        ;
    138141        K BSDXIEN
     142        ;
    139143        D UPDATE^DIE("","BSDXFDA","BSDXIEN","BSDXMSG")
    140144        S BSDXIEN=+$G(BSDXIEN(1))
    141         I '+BSDXIEN Q 0
     145        I '+BSDXIEN L -@REF Q 0
    142146        ;
    143147        ;Add WP field
    144148        I BSDXNOTE]"" S BSDXNOTE(.5)=BSDXNOTE,BSDXNOTE="" D
    145149        . D WP^DIE(9002018.4,BSDXIEN_",",1,"","BSDXNOTE","BSDXMSG")
     150        L -@REF
    146151        ;
    147152        Q 1
     
    149154ERR(BSDXI,BSDXCNT,BSDXERR)      ;Error processing
    150155        S BSDXI=BSDXI+1
    151            S BSDXERR=$TR(BSDXERR,"^","~")
     156        S BSDXERR=$TR(BSDXERR,"^","~")
    152157        S ^BSDXTMP($J,BSDXI)=BSDXCNT_"^"_BSDXERR_$C(30)
    153158        S BSDXI=BSDXI+1
     
    157162ETRAP   ;EP Error trap entry
    158163        ; No Txn here. So don't rollback anything
    159            N $ET S $ET="D ^%ZTER HALT" ; Emergency Error Trap
    160            D ^%ZTER
    161            S $EC="" ; Clear error
     164        N $ET S $ET="D ^%ZTER HALT" ; Emergency Error Trap
     165        D ^%ZTER
     166        S $EC="" ; Clear error
    162167        I '$D(BSDXI) N BSDXI S BSDXI=0
    163168        D ERR(BSDXI,$G(BSDXCNT),"~100~BSDX29, Error: "_$G(%ZTERZE))
Note: See TracChangeset for help on using the changeset viewer.