266 lines
9.9 KiB
Mathematica
266 lines
9.9 KiB
Mathematica
BSDXUT2 ; VEN/SMH - Unit Tests for Scheduling GUI - cont. ; 7/9/12 3:18pm
|
|
;;1.7;BSDX;;Jun 01, 2013;Build 24
|
|
;
|
|
EN ; Run all unit tests in this routine
|
|
D UT25,PIMS
|
|
QUIT
|
|
;
|
|
UT25 ; Unit Tests for BSDX25
|
|
; Make appointment, checkin, then uncheckin
|
|
N $ET S $ET="W ""An Error Occured. Breaking."",! BREAK"
|
|
N RESNAM S RESNAM="UTCLINIC"
|
|
N HLRESIENS ; holds output of UTCR^BSDXUT - HL IEN^Resource IEN
|
|
D
|
|
. N $ET S $ET="D ^%ZTER B"
|
|
. S HLRESIENS=$$UTCR^BSDXUT(RESNAM)
|
|
. I HLRESIENS<0 S $EC=",U1," ; not supposed to happen - hard crash if so
|
|
;
|
|
N HLIEN,RESIEN
|
|
S HLIEN=$P(HLRESIENS,U)
|
|
S RESIEN=$P(HLRESIENS,U,2)
|
|
;
|
|
; Get start and end times
|
|
N TIMES S TIMES=$$TIMES^BSDXUT ; appt time^end time
|
|
N APPTTIME S APPTTIME=$P(TIMES,U)
|
|
N ENDTIME S ENDTIME=$P(TIMES,U,2)
|
|
;
|
|
; Test 1: Make normal appointment and cancel it. See if every thing works
|
|
N ZZZ,DFN
|
|
S DFN=5
|
|
N ZZZ
|
|
D APPADD^BSDX07(.ZZZ,APPTTIME,ENDTIME,DFN,RESNAM,30,"Sam's Note",1)
|
|
N APPTID S APPTID=+^BSDXTMP($J,1)
|
|
N HL S HL=$$GET1^DIQ(9002018.4,APPTID,".07:.04","I")
|
|
D CHECKIN^BSDX25(.ZZZ,APPTID,$$NOW^XLFDT())
|
|
IF '$P(^BSDXAPPT(APPTID,0),U,3) WRITE "ERROR IN CHECKIN 1",!
|
|
IF '+$G(^SC(HL,"S",APPTTIME,1,1,"C")) WRITE "ERROR IN CHECKIN 2",!
|
|
D RMCI^BSDX25(.ZZZ,APPTID)
|
|
IF $P(^BSDXAPPT(APPTID,0),U,3) WRITE "ERROR IN UNCHECKIN 1",!
|
|
IF $G(^SC(HL,"S",APPTTIME,1,1,"C")) WRITE "ERROR IN UNCHECKIN 2",!
|
|
D RMCI^BSDX25(.ZZZ,APPTID) ; again, test sanity in repeat
|
|
IF $P(^BSDXAPPT(APPTID,0),U,3) WRITE "ERROR IN UNCHECKIN 1",!
|
|
IF $G(^SC(HL,"S",APPTTIME,1,1,"C")) WRITE "ERROR IN UNCHECKIN 2",!
|
|
; now test various error conditions
|
|
; Test Error 1
|
|
D RMCI^BSDX25(.ZZZ,)
|
|
IF +^BSDXTMP($J,1)'=-1 WRITE "ERROR IN ETest 1",!
|
|
; Test Error 2
|
|
D RMCI^BSDX25(.ZZZ,234987234398)
|
|
IF +^BSDXTMP($J,1)'=-2 WRITE "ERROR IN Etest 2",!
|
|
; Tests for 3 to 5 difficult to produce
|
|
; Error tests follow: Mumps error test;
|
|
; Error in RMCI
|
|
N BSDXDIE S BSDXDIE=1
|
|
D RMCI^BSDX25(.ZZZ,APPTID)
|
|
IF +^BSDXTMP($J,1)'=-100 WRITE "ERROR IN Etest 3",!
|
|
K BSDXDIE
|
|
; M Error in CHECKIN
|
|
N BSDXDIE S BSDXDIE=1
|
|
D CHECKIN^BSDX25(.ZZZ,APPTID,$$NOW^XLFDT())
|
|
IF +^BSDXTMP($J,1)'=-100 WRITE "ERROR IN Etest 8",!
|
|
K BSDXDIE
|
|
; M Error in $$CHECKIN^BSDXAPI
|
|
N BSDXDIE2 S BSDXDIE2=1
|
|
D CHECKIN^BSDX25(.ZZZ,APPTID,$$NOW^XLFDT())
|
|
IF +^BSDXTMP($J,1)'=-100 WRITE "ERROR IN Etest 9",!
|
|
K BSDXDIE2
|
|
; M Error in $$RMCI^BSDXAPI1
|
|
N BSDXDIE2 S BSDXDIE2=1
|
|
D RMCI^BSDX25(.ZZZ,APPTID)
|
|
IF +^BSDXTMP($J,1)'=-100 WRITE "ERROR IN Etest 13",!
|
|
K BSDXDIE2
|
|
;
|
|
; Get start and end times
|
|
N TIMES S TIMES=$$TIMES^BSDXUT ; appt time^end time
|
|
N APPTTIME S APPTTIME=$P(TIMES,U)
|
|
N ENDTIME S ENDTIME=$P(TIMES,U,2)
|
|
;
|
|
N ZZZ,DFN
|
|
S DFN=5
|
|
N ZZZ
|
|
D APPADD^BSDX07(.ZZZ,APPTTIME,ENDTIME,DFN,RESNAM,30,"Sam's Note",1)
|
|
N APPTID S APPTID=+^BSDXTMP($J,1)
|
|
N HL S HL=$$GET1^DIQ(9002018.4,APPTID,".07:.04","I")
|
|
;
|
|
; Simulated Error in $$BSDXCHK^BSDX25
|
|
N BSDXSIMERR1 S BSDXSIMERR1=1
|
|
D CHECKIN^BSDX25(.ZZZ,APPTID,$$NOW^XLFDT())
|
|
IF +^BSDXTMP($J,1)'=-3 WRITE "ERROR in Etest 10",!
|
|
IF $P(^BSDXAPPT(APPTID,0),U,3) WRITE "ERROR IN CHECKIN 111",!
|
|
IF +$G(^SC(HL,"S",APPTTIME,1,1,"C")) WRITE "ERROR IN CHECKIN 112",!
|
|
K BSDXSIMERR1
|
|
;
|
|
; Simulated Error in $$CHECKICK^BSDXAPI
|
|
N BSDXSIMERR2 S BSDXSIMERR2=1
|
|
D CHECKIN^BSDX25(.ZZZ,APPTID,$$NOW^XLFDT())
|
|
IF +^BSDXTMP($J,1)'=-10 WRITE "ERROR in Etest 11",!
|
|
IF $P(^BSDXAPPT(APPTID,0),U,3) WRITE "ERROR IN CHECKIN 113",!
|
|
IF +$G(^SC(HL,"S",APPTTIME,1,1,"C")) WRITE "ERROR IN CHECKIN 114",!
|
|
K BSDXSIMERR2
|
|
;
|
|
; Simulated Error in $$CHECKIN^BSDXAPI
|
|
N BSDXSIMERR3 S BSDXSIMERR3=1
|
|
D CHECKIN^BSDX25(.ZZZ,APPTID,$$NOW^XLFDT())
|
|
IF +^BSDXTMP($J,1)'=-10 WRITE "ERROR in Etest 11",!
|
|
IF $P(^BSDXAPPT(APPTID,0),U,3) WRITE "ERROR IN CHECKIN 115",!
|
|
IF +$G(^SC(HL,"S",APPTTIME,1,1,"C")) WRITE "ERROR IN CHECKIN 116",!
|
|
K BSDXSIMERR3
|
|
;
|
|
; Check-in for real for the subsequent tests
|
|
D CHECKIN^BSDX25(.ZZZ,APPTID,$$NOW^XLFDT()) ; Check-in first!
|
|
IF '$P(^BSDXAPPT(APPTID,0),U,3) WRITE "ERROR IN CHECKIN 1110",!
|
|
IF '+$G(^SC(HL,"S",APPTTIME,1,1,"C")) WRITE "ERROR IN RMCI 1120",!
|
|
;
|
|
; Simulated Error in $$BSDXCHK^BSDX25; This time for remove check-in
|
|
N BSDXSIMERR1 S BSDXSIMERR1=1
|
|
D RMCI^BSDX25(.ZZZ,APPTID)
|
|
IF +^BSDXTMP($J,1)'=-6 WRITE "ERROR in Etest 14",!
|
|
IF '$P(^BSDXAPPT(APPTID,0),U,3) WRITE "ERROR IN RMCI 111",!
|
|
IF '+$G(^SC(HL,"S",APPTTIME,1,1,"C")) WRITE "ERROR IN RMCI 112",!
|
|
K BSDXSIMERR1
|
|
;
|
|
; Simulated Error in $$RMCICK^BSDXAPI1
|
|
N BSDXSIMERR2 S BSDXSIMERR2=1
|
|
D RMCI^BSDX25(.ZZZ,APPTID)
|
|
IF +^BSDXTMP($J,1)'=-5 WRITE "ERROR in Etest 15",!
|
|
IF '$P(^BSDXAPPT(APPTID,0),U,3) WRITE "ERROR IN RMCI 113",!
|
|
IF '+$G(^SC(HL,"S",APPTTIME,1,1,"C")) WRITE "ERROR IN RMCI 114",!
|
|
K BSDXSIMERR2
|
|
;
|
|
; Simulated Error in $$RMCI^BSDXAPI1
|
|
N BSDXSIMERR3 S BSDXSIMERR3=1
|
|
D RMCI^BSDX25(.ZZZ,APPTID)
|
|
IF +^BSDXTMP($J,1)'=-5 WRITE "ERROR in Etest 16",!
|
|
IF '$P(^BSDXAPPT(APPTID,0),U,3) WRITE "ERROR IN RMCI 115",!
|
|
IF '+$G(^SC(HL,"S",APPTTIME,1,1,"C")) WRITE "ERROR IN RMCI 116",!
|
|
K BSDXSIMERR3
|
|
;
|
|
; Unlinked Clinic Tests
|
|
N RESNAM S RESNAM="UTCLINICUL" ; Unlinked Clinic
|
|
N RESIEN
|
|
D
|
|
. N $ET S $ET="D ^%ZTER B"
|
|
. S RESIEN=$$UTCRRES^BSDXUT(RESNAM)
|
|
. I RESIEN<0 S $EC=",U1," ; not supposed to happen - hard crash if so
|
|
;
|
|
; Get start and end times
|
|
N TIMES S TIMES=$$TIMES^BSDXUT ; appt time^end time
|
|
N APPTTIME S APPTTIME=$P(TIMES,U)
|
|
N ENDTIME S ENDTIME=$P(TIMES,U,2)
|
|
;
|
|
N ZZZ,DFN
|
|
S DFN=4
|
|
N ZZZ
|
|
D APPADD^BSDX07(.ZZZ,APPTTIME,ENDTIME,DFN,RESNAM,30,"Sam's Note",1)
|
|
N APPTID S APPTID=+^BSDXTMP($J,1)
|
|
N HL S HL=$$GET1^DIQ(9002018.4,APPTID,".07:.04","I")
|
|
I HL'="" W "Error. Hospital Location Exists",!
|
|
;
|
|
D CHECKIN^BSDX25(.ZZZ,APPTID,$$NOW^XLFDT())
|
|
IF '$P(^BSDXAPPT(APPTID,0),U,3) WRITE "ERROR IN CHECKIN 3",!
|
|
;test
|
|
D RMCI^BSDX25(.ZZZ,APPTID)
|
|
IF $P(^BSDXAPPT(APPTID,0),U,3) WRITE "ERROR IN UNCHECKIN 3",!
|
|
D RMCI^BSDX25(.ZZZ,APPTID) ; again, test sanity in repeat
|
|
IF $P(^BSDXAPPT(APPTID,0),U,3) WRITE "ERROR IN UNCHECKIN 3",!
|
|
; now test various error conditions
|
|
; Test Error 1
|
|
D RMCI^BSDX25(.ZZZ,)
|
|
IF +^BSDXTMP($J,1)'=-1 WRITE "ERROR IN ETest 5",!
|
|
; Test Error 2
|
|
D RMCI^BSDX25(.ZZZ,234987234398)
|
|
IF +^BSDXTMP($J,1)'=-2 WRITE "ERROR IN Etest 6",!
|
|
; Tests for 3 to 5 difficult to produce
|
|
; Error tests follow: Mumps error test; Transaction restartability
|
|
N BSDXDIE S BSDXDIE=1
|
|
D RMCI^BSDX25(.ZZZ,APPTID)
|
|
IF +^BSDXTMP($J,1)'=-100 WRITE "ERROR IN Etest 7",!
|
|
K BSDXDIE
|
|
QUIT
|
|
;
|
|
PIMS ; Tests for running PIMS by itself.
|
|
N $ET S $ET="W ""An Error Occured. Breaking."",! BREAK"
|
|
N RESNAM S RESNAM="UTCLINIC"
|
|
N HLRESIENS ; holds output of UTCR^BSDXUT - HL IEN^Resource IEN
|
|
D
|
|
. N $ET S $ET="D ^%ZTER B"
|
|
. S HLRESIENS=$$UTCR^BSDXUT(RESNAM)
|
|
. I HLRESIENS<0 S $EC=",U1," ; not supposed to happen - hard crash if so
|
|
;
|
|
N HLIEN,RESIEN
|
|
S HLIEN=$P(HLRESIENS,U)
|
|
S RESIEN=$P(HLRESIENS,U,2)
|
|
;
|
|
;
|
|
N APPTTIME S APPTTIME=$$TIMEHL^BSDXUT(HLIEN) ; appt time
|
|
N DFN S DFN=2
|
|
;
|
|
; TEST $$MAKE1^BSDXAPI
|
|
N % S %=$$MAKE1^BSDXAPI(DFN,HLIEN,3,APPTTIME,15,"Sam Test Appt"_DFN)
|
|
I % W "Error in $$MAKE1^BSDXAPI for TIME "_APPTTIME_" for DFN "_DFN,!,%,!
|
|
I '$D(^BSDXAPPT("APAT",DFN,APPTTIME)) W "No BSDX Appointment Created",!
|
|
N RESID S RESID=$O(^(APPTTIME,""))
|
|
N APPTID S APPTID=$O(^(RESID,""))
|
|
I 'APPTID W "Can't get appointment",!
|
|
IF $P(^BSDXAPPT(APPTID,0),U,3) WRITE "ERROR IN CHECKIN 3",!
|
|
;
|
|
; TEST CHECKIN1 AND RMCI ^BSDXAPI[1]
|
|
N % S %=$$CHECKIN1^BSDXAPI(DFN,HLIEN,APPTTIME) ; Checkin via PIMS
|
|
I % W "Error in Checking in via BSDXAPI",!
|
|
IF '+$G(^SC(HLIEN,"S",APPTTIME,1,1,"C")) WRITE "ERROR IN CHECKIN 10",!
|
|
IF '$P(^BSDXAPPT(APPTID,0),U,3) WRITE "ERROR IN CHECKIN 11",!
|
|
N % S %=$$RMCI^BSDXAPI1(DFN,HLIEN,APPTTIME)
|
|
I % W "Error removing Check-in via PIMS",!
|
|
I +$G(^SC(HLIEN,"S",APPTTIME,1,1,"C")) WRITE "ERROR IN UNCHECKIN 12",!
|
|
IF $P(^BSDXAPPT(APPTID,0),U,3) WRITE "ERROR IN CHECKIN 13",!
|
|
N % S %=$$CHECKIN1^BSDXAPI(DFN,HLIEN,APPTTIME) ; Checkin via PIMS again
|
|
I % W "Error in Checking in via BSDXAPI",!
|
|
IF '+$G(^SC(HLIEN,"S",APPTTIME,1,1,"C")) WRITE "ERROR IN CHECKIN 14",!
|
|
IF '$P(^BSDXAPPT(APPTID,0),U,3) WRITE "ERROR IN CHECKIN 15",!
|
|
;
|
|
; TEST CANCEL1^BSDXAPI
|
|
N APPTTIME S APPTTIME=$$TIMEHL^BSDXUT(HLIEN) ; appt time
|
|
N DFN S DFN=2
|
|
N % S %=$$MAKE1^BSDXAPI(DFN,HLIEN,3,APPTTIME,15,"Sam Test Appt"_DFN)
|
|
I % W "Error in $$MAKE1^BSDXAPI for TIME "_APPTTIME_" for DFN "_DFN,!,%,!
|
|
I '$D(^BSDXAPPT("APAT",DFN,APPTTIME)) W "No BSDX Appointment Created",!
|
|
N RESID S RESID=$O(^(APPTTIME,""))
|
|
N APPTID S APPTID=$O(^(RESID,""))
|
|
I 'APPTID W "Can't get appointment",!
|
|
N % S %=$$CANCEL1^BSDXAPI(DFN,HLIEN,"PC",APPTTIME,1,"Afraid of Baby Foxes")
|
|
I % W "Error cancelling via $$CANCEL1^BSDXAPI",!
|
|
I ^BSDXAPPT(APPTID,0) ; Change $R
|
|
I '$P(^(0),U,12) W "No cancel date found in BSDXAPPT",!
|
|
; Make same appointment again!
|
|
; NB: Index APAT will have two identical entries, one for the cancelled
|
|
; appointment, and one for the new one. I won't check it for that reason.
|
|
N % S %=$$MAKE1^BSDXAPI(DFN,HLIEN,3,APPTTIME,15,"Sam Test Appt"_DFN)
|
|
I % W "Error in $$MAKE1^BSDXAPI for TIME "_APPTTIME_" for DFN "_DFN,!,%,!
|
|
;
|
|
; TEST NOSHOW^BSDXAPI1
|
|
N APPTTIME S APPTTIME=$$TIMEHL^BSDXUT(HLIEN) ; appt time
|
|
N DFN S DFN=3
|
|
N % S %=$$MAKE1^BSDXAPI(DFN,HLIEN,3,APPTTIME,15,"Sam Test Appt"_DFN)
|
|
I % W "Error in $$MAKE1^BSDXAPI for TIME "_APPTTIME_" for DFN "_DFN,!,%,!
|
|
I '$D(^BSDXAPPT("APAT",DFN,APPTTIME)) W "No BSDX Appointment Created",!
|
|
N RESID S RESID=$O(^(APPTTIME,""))
|
|
N APPTID S APPTID=$O(^(RESID,""))
|
|
I 'APPTID W "Can't get appointment",!
|
|
; No show via PIMS
|
|
N % S %=$$NOSHOW^BSDXAPI1(DFN,HLIEN,APPTTIME,1)
|
|
I % W "Error no-showing via $$NOSHOW^BSDXAPI1",!
|
|
I ^BSDXAPPT(APPTID,0) ; Change $R
|
|
I '$P(^(0),U,10) W "No-show not present in ^BSDXAPPT",!
|
|
; un-noshow via PIMS
|
|
N % S %=$$NOSHOW^BSDXAPI1(DFN,HLIEN,APPTTIME,0)
|
|
I % W "Error no-showing via $$NOSHOW^BSDXAPI1",!
|
|
I ^BSDXAPPT(APPTID,0) ; Change $R
|
|
I $P(^(0),U,10) W "No-show present in ^BSDXAPPT when it shouldn't",!
|
|
;
|
|
; NB: UPDATENT^BSDXAPI is updates the note. Right now, we don't have any
|
|
; way to update the note from BSDXAPI back to ^BSDXAPPT as the protocol
|
|
; file is currently not involved. Right now I can't even find the code
|
|
; that lets you change an appointment note in PIMS.
|
|
;
|
|
QUIT
|