Ignore:
Timestamp:
Oct 8, 2012, 6:59:10 AM (12 years ago)
Author:
Tariq Hamkari
Message:

updated the BSDX version to 1.7

  • fix "BSDX01.m" routine , it was take too long time to retrieve patient radiology exams.
File:
1 edited

Legend:

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

    r1481 r1563  
    1 BSDX29  ; IHS/OIT/HMW - WINDOWS SCHEDULING RPCS ; 7/9/12 11:50am
    2         ;;1.7T2;BSDX;;Jul 11, 2012;Build 18
     1BSDX29  ; IHS/OIT/HMW - WINDOWS SCHEDULING RPCS ; 4/28/11 10:25am
     2        ;;1.6;BSDX;;Aug 31, 2011;Build 25
    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.
    1011        ; - 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
    1412        ;
    1513BSDXCPD(BSDXY,BSDXRES,BSDX44,BSDXBEG,BSDXEND)   ;EP
    1614        ;Entry point for debugging
    1715        ;
    18         ;D DEBUG^%Serenji("BSDXCP^BSDX29(.BSDXY,BSDXRES,BSDX44,BSDXBEG,BSDXEND)")
     16        D DEBUG^%Serenji("BSDXCP^BSDX29(.BSDXY,BSDXRES,BSDX44,BSDXBEG,BSDXEND)")
    1917        Q
    2018        ;
     
    2422           ;Called by RPC: BSDX COPY APPOINTMENTS
    2523        ;
    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         ;
     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           ;
    3331        ;Returns ADO Recordset containing TASK_NUMBER and ERRORID
    3432        ;
    35         ; Return Array
     33           ; Return Array
    3634        S BSDXY=$NA(^BSDXTMP($J))
    37         K ^BSDXTMP($J)
    38         ; $ET
    39         N $ET S $ET="G ETRAP^BSDX29"
     35           K ^BSDXTMP($J)
     36           ; $ET
     37           N $ET S $ET="G ETRAP^BSDX29"
    4038        ; Counter
    41         N BSDXI S BSDXI=0
    42         ; Header Node
     39           N BSDXI S BSDXI=0
     40           ; Header Node
    4341        S ^BSDXTMP($J,0)="T00010TASK_NUMBER^T00100ERRORID"_$C(30)
    4442        ;
    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
     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
    5149        ; Task Load
    52         S ZTRTN="ZTM^BSDX29",ZTDTH=$H,ZTDESC="COPY PATIENT APPTS",ZTIO=""
     50        S ZTRTN="ZTM^BSDX29",ZTDTH=$H,ZTDESC="COPY PATIENT APPTS"
    5351        S ZTSAVE("BSDXBEG")="",ZTSAVE("BSDXEND")="",ZTSAVE("BSDX44")="",ZTSAVE("BSDXRES")=""
    5452        D ^%ZTLOAD
     
    6462        ;
    6563ZTM     ;EP - Taskman entry point
    66         ; Variables set up in ZTSAVE above
    67         ;
     64           ; Variables set up in ZTSAVE above
     65           ;
    6866        Q:'$D(ZTSK)
    69         ;
    70         ; $ET
    71         N $ET S $ET="G ZTMERR^BSDX29"
    72         ;
     67           ; $ET
     68           N $ET S $ET="G ZTMERR^BSDX29"
     69        ; Txn
     70           TSTART (BSDXBEG,BSDXEND,BSDX44,BSDXRES):T="BSDX COPY APPOINTMENT^BSDX29"
    7371        ;$O through ^SC(BSDX44,"S",
    7472        N BSDXCNT S BSDXCNT=0  ; Count of Copied Appointments
    75         N BSDXQUIT S BSDXQUIT=0  ; Quit Flag to be retrieved from an external proc
     73           N BSDXQUIT S BSDXQUIT=0  ; Quit Flag to be retrieved from an external proc
    7674        ; Set Count
    77         S ^BSDXTMP("BSDXCOPY",ZTSK)=BSDXCNT
     75           S ^BSDXTMP("BSDXCOPY",ZTSK)=BSDXCNT
    7876        ; Loop through dates here.
    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
     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
    8381        . F  S BSDXIEN=$O(^SC(BSDX44,"S",BSDXBEG,1,BSDXIEN)) Q:'+BSDXIEN  Q:BSDXQUIT  D
    8482        . . N BSDXNOD S BSDXNOD=$G(^SC(BSDX44,"S",BSDXBEG,1,BSDXIEN,0)) ; Node
    8583        . . Q:'+BSDXNOD  ; Quit if no node
    8684        . . N BSDXCAN S BSDXCAN=$P(BSDXNOD,U,9) ; Cancel flag
    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
     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
    9088        . . N BSDXCLRK S BSDXCLRK=$P(BSDXNOD,U,6) ;appt made by (clerk)
    9189        . . N BSDXMADE S BSDXMADE=$P(BSDXNOD,U,7) ;date appt made
     
    9391        . . S BSDXCNT=BSDXCNT+$$XFER(BSDXRES,BSDXBEG,BSDXPAT,BSDXLEN,BSDXCLRK,BSDXMADE,BSDXNOTE)
    9492        . . I +BSDXCNT,BSDXCNT#10=0 S ^BSDXTMP("BSDXCOPY",ZTSK)=BSDXCNT_" records copied." ;every 10th record
    95         . . I $D(^BSDXTMP("BSDXCOPY",ZTSK,"CANCEL")) S BSDXQUIT=1 ;Check for cancel flag ; smh - not used currently (v1.7)
    96         ;
    97         ;
     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
    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
    103105        D ^%ZTER
     106           S $EC="" ; Clear Error
    104107        QUIT
    105108        ;
     
    109112        ;Return 1 if record copied, otherwise 0
    110113        ;
    111         N REF
    112         S REF=$NA(^BSDXLOCK(BSDXRES,BSDXBEG,BSDXPAT)) ; This combo is unique
    113         L +@REF:0  E  Q 0
    114         ;
    115114        ;$O Thru ^BSDXAPPT to determine if this appt already added
    116         N BSDXEND,BSDXIEN,BSDXFND,BSDXPAT2,BSDXNOD
     115        N BSDXEND,BSDXIEN,BSDXFND,BSDXPAT2
    117116        S BSDXIEN=0,BSDXFND=0
    118117        F  S BSDXIEN=$O(^BSDXAPPT("ARSRC",BSDXRES,BSDXBEG,BSDXIEN)) Q:'+BSDXIEN  D  Q:BSDXFND
     
    123122        . I BSDXPAT2=BSDXPAT S BSDXFND=1
    124123        . Q
    125         I BSDXFND L -@REF Q 0
     124        Q:BSDXFND 0
    126125        ;
    127126        ;Add to BSDX APPOINTMENT
     
    129128        ;Calculate ending time from beginning time and duration.
    130129        S BSDXEND=$$ADDMIN(BSDXBEG,BSDXLEN)
    131         N BSDXFDA,BSDXIENS
    132130        S BSDXIENS="+1,"
    133131        S BSDXFDA(9002018.4,BSDXIENS,.01)=BSDXBEG
     
    139137        ;
    140138        K BSDXIEN
    141         ;
    142139        D UPDATE^DIE("","BSDXFDA","BSDXIEN","BSDXMSG")
    143140        S BSDXIEN=+$G(BSDXIEN(1))
    144         I '+BSDXIEN L -@REF Q 0
     141        I '+BSDXIEN Q 0
    145142        ;
    146143        ;Add WP field
    147144        I BSDXNOTE]"" S BSDXNOTE(.5)=BSDXNOTE,BSDXNOTE="" D
    148145        . D WP^DIE(9002018.4,BSDXIEN_",",1,"","BSDXNOTE","BSDXMSG")
    149         L -@REF
    150146        ;
    151147        Q 1
    152148        ;
    153149ERR(BSDXI,BSDXCNT,BSDXERR)      ;Error processing
    154         ; If last line is $C(31), we are done. No more errors to send to client.
    155         I ^BSDXTMP($J,$O(^BSDXTMP($J," "),-1))=$C(31) QUIT
    156         S BSDXI=BSDXI+1
    157         S BSDXERR=$TR(BSDXERR,"^","~")
     150        S BSDXI=BSDXI+1
     151           S BSDXERR=$TR(BSDXERR,"^","~")
    158152        S ^BSDXTMP($J,BSDXI)=BSDXCNT_"^"_BSDXERR_$C(30)
    159153        S BSDXI=BSDXI+1
     
    163157ETRAP   ;EP Error trap entry
    164158        ; No Txn here. So don't rollback anything
    165         N $ET S $ET="D ^%ZTER HALT" ; Emergency Error Trap
    166         D ^%ZTER
    167         S $EC="" ; Clear error
     159           N $ET S $ET="D ^%ZTER HALT" ; Emergency Error Trap
     160           D ^%ZTER
     161           S $EC="" ; Clear error
    168162        I '$D(BSDXI) N BSDXI S BSDXI=0
    169163        D ERR(BSDXI,$G(BSDXCNT),"~100~BSDX29, Error: "_$G(%ZTERZE))
Note: See TracChangeset for help on using the changeset viewer.