Changeset 1449 for Scheduling


Ignore:
Timestamp:
Jun 18, 2012, 5:08:29 PM (12 years ago)
Author:
Sam Habiel
Message:

Much more automated Unit Tests for BSDX07 relying on code in BSDX35

Location:
Scheduling/trunk/m
Files:
2 edited

Legend:

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

    r1187 r1449  
    1 BSDX07  ; VW/UJO/SMH - WINDOWS SCHEDULING RPCS  ; 4/28/11 10:17am
    2            ;;1.6T2;BSDX;;May 16, 2011
    3            ; Licensed under LGPL
    4            ;
    5            ; Change Log:
    6            ; UJO/SMH
    7            ; v1.3 July 13 2010 - Add support i18n - Dates input as FM dates, not US.
    8            ; v1.42 Oct 22 2010 - Transaction now restartable by providing arguments
    9            ;   thanks to Rick Marshall and Zach Gonzalez at Oroville.
    10            ; v1.42 Oct 30 2010 - Extensive refactoring.
    11            ; v1.5  Mar 15 2011 - End time does not have to have time anymore.
    12            ;      It could be midnight of the next day
    13            ; v1.6 Apr 11 2011 - Support for Scheduling Radiology Exams...
    14            ;
    15            ; Error Reference:
    16            ; -1: Patient Record is locked. This means something is wrong!!!!
    17            ; -2: Start Time is not a valid Fileman date
    18            ; -3: End Time is not a valid Fileman date
    19            ; v1.5:obsolete::-4: End Time does not have time inside of it.
    20            ; -5: BSDXPATID is not numeric
    21            ; -6: Patient Does not exist in ^DPT
    22            ; -7: Resource Name does not exist in B index of BSDX RESOURCE
    23            ; -8: Resouce doesn't exist in ^BSDXRES
    24            ; -9: Couldn't add appointment to BSDX APPOINTMENT
    25            ; -10: Couldn't add appointment to files 2 and/or 44
    26            ; -100: Mumps Error
     1BSDX07  ; VW/UJO/SMH - WINDOWS SCHEDULING RPCS  ; 6/18/12 2:27pm
     2        ;;1.7T1;BSDX;;Aug 31, 2011;Build 18
     3        ; Licensed under LGPL
     4        ;
     5        ; Change Log:
     6        ; UJO/SMH
     7        ; v1.3 July 13 2010 - Add support i18n - Dates input as FM dates, not US.
     8        ; v1.42 Oct 22 2010 - Transaction now restartable by providing arguments
     9        ;   thanks to Rick Marshall and Zach Gonzalez at Oroville.
     10        ; v1.42 Oct 30 2010 - Extensive refactoring.
     11        ; v1.5  Mar 15 2011 - End time does not have to have time anymore.
     12        ;      It could be midnight of the next day
     13        ; v1.6 Apr 11 2011 - Support for Scheduling Radiology Exams...
     14        ;
     15        ; Error Reference:
     16        ; -1: Patient Record is locked. This means something is wrong!!!!
     17        ; -2: Start Time is not a valid Fileman date
     18        ; -3: End Time is not a valid Fileman date
     19        ; v1.5:obsolete::-4: End Time does not have time inside of it.
     20        ; -5: BSDXPATID is not numeric
     21        ; -6: Patient Does not exist in ^DPT
     22        ; -7: Resource Name does not exist in B index of BSDX RESOURCE
     23        ; -8: Resouce doesn't exist in ^BSDXRES
     24        ; -9: Couldn't add appointment to BSDX APPOINTMENT
     25        ; -10: Couldn't add appointment to files 2 and/or 44
     26        ; -100: Mumps Error
    2727       
    2828APPADDD(BSDXY,BSDXSTART,BSDXEND,BSDXPATID,BSDXRES,BSDXLEN,BSDXNOTE,BSDXATID)       ;EP
    29            ;Entry point for debugging
    30            D DEBUG^%Serenji("APPADD^BSDX07(.BSDXY,BSDXSTART,BSDXEND,BSDXPATID,BSDXRES,BSDXLEN,BSDXNOTE,BSDXATID)")
    31            Q
    32            ;
     29        ;Entry point for debugging
     30        D DEBUG^%Serenji("APPADD^BSDX07(.BSDXY,BSDXSTART,BSDXEND,BSDXPATID,BSDXRES,BSDXLEN,BSDXNOTE,BSDXATID)")
     31        Q
     32        ;
    3333UT      ; Unit Tests
    34            N ZZZ
    35            ; Test for bad start date
    36            D APPADD(.ZZZ,2100123,3100123.3,2,"Dr Office",30,"Sam's Note",1)
    37            I +$P(^BSDXTMP($J,1),U,2)'=-2 W "Error in -2",!
    38            ; Test for bad end date
    39            D APPADD(.ZZZ,3100123,2100123.3,2,"Dr Office",30,"Sam's Note",1)
    40            I +$P(^BSDXTMP($J,1),U,2)'=-3 W "Error in -3",!
    41            ; Test for end date without time
    42            D APPADD(.ZZZ,3100123.1,3100123,2,"Dr Office",30,"Sam's Note",1)
    43            I +$P(^BSDXTMP($J,1),U,2)'=-4 W "Error in -4",!
    44            ; Test for mumps error
    45            S bsdxdie=1
    46            D APPADD(.ZZZ,3100123.09,3100123.093,2,"Dr Office",30,"Sam's Note",1)
    47            I +$P(^BSDXTMP($J,1),U,2)'=-100 W "Error in -100: M Error",!
    48            K bsdxdie
    49            ; Test for TRESTART
    50            s bsdxrestart=1
    51            D APPADD(.ZZZ,3100123.09,3100123.093,3,"Dr Office",30,"Sam's Note",1)
    52            I +$P(^BSDXTMP($J,1),U,2)'=0&(+$P(^BSDXTMP($J,1),U,2)'=-10) W "Error in TRESTART",!
    53            k bsdxrestart
    54            ; Test for non-numeric patient
    55            D APPADD(.ZZZ,3100123.09,3100123.093,"CAT,DOG","Dr Office",30,"Sam's Note",1)
    56            I +$P(^BSDXTMP($J,1),U,2)'=-5 W "Error in -5",!
    57            ; Test for a non-existent patient
    58            D APPADD(.ZZZ,3100123.09,3100123.093,8989898989,"Dr Office",30,"Sam's Note",1)
    59            I +$P(^BSDXTMP($J,1),U,2)'=-6 W "Error in -6",!
    60            ; Test for a non-existent resource name
    61            D APPADD(.ZZZ,3100123.09,3100123.093,3,"lkajsflkjsadf",30,"Sam's Note",1)
    62            I +$P(^BSDXTMP($J,1),U,2)'=-7 W "Error in -7",!
    63            ; Test for corrupted resource
    64            ; Can't test for -8 since it requires DB corruption
    65            ; Test for inability to add appointment to BSDX Appointment
    66            ; Also requires something wrong in the DB
    67            ; Test for inability to add appointment to 2,44
    68            ; Test by creating a duplicate appointment
    69            D APPADD(.ZZZ,3100123.09,3100123.093,3,"Dr Office",30,"Sam's Note",1)
    70            D APPADD(.ZZZ,3100123.09,3100123.093,3,"Dr Office",30,"Sam's Note",1)
    71            I +$P(^BSDXTMP($J,1),U,2)'=-10 W "Error in -10",!
    72            ; Test for normality:
    73            D APPADD(.ZZZ,3110123.09,3110123.093,3,"Dr Office",30,"Sam's Note",1)
    74            ; Does Appt exist?
    75            N APPID S APPID=+$P(^BSDXTMP($J,1),U)
    76            I 'APPID W "Error Making Appt-1" QUIT
    77            I +^BSDXAPPT(APPID,0)'=3110123.09 W "Error Making Appt-2"
    78            I '$D(^DPT(3,"S",3110123.09)) W "Error Making Appt-3"
    79            I '$D(^SC(2,"S",3110123.09)) W "Error Making Appt-4"
    80            QUIT
    81            ;
     34    ; Set-up - Create Clinics
     35        N RESNAM S RESNAM="UTCLINIC"
     36    N HLRESIENS ; holds output of UTCR^BSDX35 - HL IEN^Resource IEN
     37    D
     38    . N $ET S $ET="D ^%ZTER B"
     39        . S HLRESIENS=$$UTCR^BSDX35(RESNAM)
     40    . I %<0 S $EC=",U1," ; not supposed to happen
     41    ;
     42    N HLIEN,RESIEN
     43    S HLIEN=$P(HLRESIENS,U)
     44    S RESIEN=$P(HLRESIENS,U,2)
     45    ;
     46    ; Get start and end times
     47    N TIMES S TIMES=$$TIMES^BSDX35 ; appt time^end time
     48    N APPTTIME S APPTTIME=$P(TIMES,U)
     49    N ENDTIME S ENDTIME=$P(TIMES,U,2)
     50    ;
     51        N ZZZ
     52        ; Test for normality:
     53        D APPADD(.ZZZ,APPTTIME,ENDTIME,3,RESNAM,30,"Sam's Note",1)
     54        ; Does Appt exist?
     55        N APPID S APPID=+$P(^BSDXTMP($J,1),U)
     56        I 'APPID W "Error Making Appt-1" QUIT
     57        I +^BSDXAPPT(APPID,0)'=APPTTIME W "Error Making Appt-2"
     58        I '$D(^DPT(3,"S",APPTTIME)) W "Error Making Appt-3"
     59        I '$D(^SC(HLIEN,"S",APPTTIME)) W "Error Making Appt-4"
     60    ;
     61        ; Test for bad start date
     62        D APPADD(.ZZZ,2100123,3100123.3,2,RESNAM,30,"Sam's Note",1)
     63        I +$P(^BSDXTMP($J,1),U,2)'=-2 W "Error in -2",!
     64        ; Test for bad end date
     65        D APPADD(.ZZZ,3100123,2100123.3,2,RESNAM,30,"Sam's Note",1)
     66        I +$P(^BSDXTMP($J,1),U,2)'=-3 W "Error in -3",!
     67        ; Test for end date without time - obsolete
     68        ; D APPADD(.ZZZ,3100123.1,3100123,2,RESNAM,30,"Sam's Note",1)
     69        ; I +$P(^BSDXTMP($J,1),U,2)'=-4 W "Error in -4",!
     70        ; Test for mumps error
     71        S bsdxdie=1
     72        D APPADD(.ZZZ,APPTTIME,ENDTIME,2,RESNAM,30,"Sam's Note",1)
     73        I +$P(^BSDXTMP($J,1),U,2)'=-100 W "Error in -100: M Error",!
     74        K bsdxdie
     75        ; Test for TRESTART
     76        s bsdxrestart=1
     77        D APPADD(.ZZZ,APPTTIME,ENDTIME,3,RESNAM,30,"Sam's Note",1)
     78        I +$P(^BSDXTMP($J,1),U,2)'=0&(+$P(^BSDXTMP($J,1),U,2)'=-10) W "Error in TRESTART",!
     79        k bsdxrestart
     80        ; Test for non-numeric patient
     81        D APPADD(.ZZZ,APPTTIME,ENDTIME,"CAT,DOG",RESNAM,30,"Sam's Note",1)
     82        I +$P(^BSDXTMP($J,1),U,2)'=-5 W "Error in -5",!
     83        ; Test for a non-existent patient
     84        D APPADD(.ZZZ,APPTTIME,ENDTIME,8989898989,RESNAM,30,"Sam's Note",1)
     85        I +$P(^BSDXTMP($J,1),U,2)'=-6 W "Error in -6",!
     86        ; Test for a non-existent resource name
     87        D APPADD(.ZZZ,APPTTIME,ENDTIME,3,"lkajsflkjsadf",30,"Sam's Note",1)
     88        I +$P(^BSDXTMP($J,1),U,2)'=-7 W "Error in -7",!
     89        ; Test for corrupted resource
     90        ; Can't test for -8 since it requires DB corruption
     91        ; Test for inability to add appointment to BSDX Appointment
     92        ; Also requires something wrong in the DB
     93        ; Test for inability to add appointment to 2,44
     94        ; Test by creating a duplicate appointment
     95    ; Get start and end times
     96    N TIMES S TIMES=$$TIMES^BSDX35 ; appt time^end time
     97    N APPTTIME S APPTTIME=$P(TIMES,U)
     98    N ENDTIME S ENDTIME=$P(TIMES,U,2)
     99        D APPADD(.ZZZ,APPTTIME,ENDTIME,3,RESNAM,30,"Sam's Note",1)
     100        D APPADD(.ZZZ,APPTTIME,ENDTIME,3,RESNAM,30,"Sam's Note",1)
     101        I +$P(^BSDXTMP($J,1),U,2)'=-10 W "Error in -10",!
     102        QUIT
     103        ;
    82104APPADD(BSDXY,BSDXSTART,BSDXEND,BSDXPATID,BSDXRES,BSDXLEN,BSDXNOTE,BSDXATID,BSDXRADEXAM) ;EP
    83105           ;
  • Scheduling/trunk/m/BSDX35.m

    r1187 r1449  
    1 BSDX35  ; IHS/OIT/HMW - WINDOWS SCHEDULING RPCS ; 4/28/11 10:29am
    2         ;;1.6T2;BSDX;;May 16, 2011
     1BSDX35  ; IHS/OIT/HMW - WINDOWS SCHEDULING RPCS ; 6/18/12 2:27pm
     2        ;;1.7T1;BSDX;;Aug 31, 2011;Build 18
    33        ; Licensed under LGPL 
    44        ;
     
    7474        S ^BSDXTMP($J,BSDXI)=$C(31)
    7575        Q
     76UTCR(RESNAM) ; $$ - Create Unit Test Clinic and Resource Pair ; Private
     77 ; Input: Resource Name By Value
     78 ; Output: -1^Error or HLIEN^RESIEN for Success (file 44 IEN^file 9002018.1 IEN)
     79 ; DO NOT USE IN A PRODUCTION ENVIRONTMENT. INTENDED FOR TESTING ONLY
     80 N HLIEN S HLIEN=$$UTCR44(RESNAM)
     81 I +HLIEN=-1 QUIT HLIEN
     82 ;
     83 N RESIEN S RESIEN=$$UTCRRES(RESNAM,HLIEN)
     84 I +RESIEN=-1 QUIT RESIEN
     85 E  QUIT HLIEN_U_RESIEN
     86 ;
     87UTCR44(HLNAME) ; $$ - Create Unit Test Clinic in File 44; Private ; TESTING ONLY CODE
     88 ; Output: -1^Error or IEN for Success
     89 ; Input: Hosp Location Name by Value
     90 ; DO NOT USE IN A PRODUCTION ENVIRONTMENT. INTENDED FOR TESTING ONLY
     91 ;
     92 I $D(^SC("B",HLNAME)) Q $O(^(HLNAME,""))
     93 ;
     94 N SAM
     95 S SAM(44,"?+1,",.01)=HLNAME            ; Name
     96 S SAM(44,"?+1,",2)="C"                 ; Type = Clinic
     97 S SAM(44,"?+1,",2.1)=1                 ; Type Extension (not used)
     98 S SAM(44,"?+1,",3.5)=$O(^DG(40.8,0))   ; Division (not yet used)
     99 S SAM(44,"?+1,",8)=295                 ; Stop Code Number (not used)
     100 S SAM(44,"?+1,",9)="M"          ; Service (not used)
     101 S SAM(44,"?+1,",1912)=15               ; Length of Appt (not used)
     102 S SAM(44,"?+1,",1917)=4                ; Display increments per hour (not used)
     103 S SAM(44,"?+1,",1918)=8                ; Overbooks/day max (not used)
     104 S SAM(44,"?+1,",2000.5)=0              ; Require Action Profiles: Yes (not used)
     105 S SAM(44,"?+1,",2001)=999              ; Allowable consecutive no-shows (not used)
     106 S SAM(44,"?+1,",2002)=999              ; Max # days for Future Booking (not used)
     107 S SAM(44,"?+1,",2005)=365              ; Max # days for Auto Rebook (not used)
     108 S SAM(44,"?+1,",2502)="N"             ; Non-Count Clinic (not used)
     109 S SAM(44,"?+1,",2504)="Y"            ; Clinic meets at this Facility? (not used)
     110 S SAM(44,"?+1,",2507)=9              ; Appointment Type (not used)
     111 ;
     112 N BSDXERR,BSDXIEN
     113 D UPDATE^DIE("",$NA(SAM),$NA(BSDXIEN),$NA(BSDXERR))
     114 Q $S($D(BSDXERR):-1_U_BSDXERR("DIERR",1,"TEXT",1),1:BSDXIEN(1))
     115 ;
     116UTCRRES(NAME,HLIEN) ; $$ - Create Unit Test Resource in 9002018.1 (BSDX RESOURCE); Private
     117 ; Input: Hospital Location IEN
     118 ; Output: -1^Error or IEN for Success
     119 ; DO NOT USE IN A PRODUCTION ENVIRONTMENT. INTENDED FOR TESTING ONLY
     120 I $D(^BSDXRES("B",NAME)) Q $O(^(NAME,""))
     121 D RSRC^BSDX16(.RES,"|"_NAME_"||"_HLIEN)
     122 N RTN S RTN=@$Q(^BSDXTMP($J,0)) ; return array next value
     123 Q $S(RTN=0:-1_U_RTN,1:+RTN) ; 0 means an error has occurred; 1 means IEN returned
     124 ;
     125TIMES() ; $$ - Create a next available appointment time^ending time; Private
     126 N NOW S NOW=$$NOW^XLFDT() ; Now time
     127 N LAST S LAST=$O(^BSDXAPPT("B"," "),-1) ; highest time in file
     128 N TIME2USE S TIME2USE=$S(NOW>LAST:NOW,1:LAST) ; Which time to use?
     129 S TIME2USE=$E(TIME2USE,1,12) ; Strip away seconds
     130 N APPTIME S APPTIME=$$FMADD^XLFDT(TIME2USE,0,0,15,0) ; Add 15 min
     131 N ENDTIME S ENDTIME=$$FMADD^XLFDT(APPTIME,0,0,15,0) ; Add 15 more min
     132 Q APPTIME_U_ENDTIME ; quit with apptime^endtime
Note: See TracChangeset for help on using the changeset viewer.