source: Scheduling/trunk/m/BSDX26.m@ 1034

Last change on this file since 1034 was 1034, checked in by Sam Habiel, 13 years ago

Refactoring of BSDX26; BSDXAPI has new ep to update note in file 44

File size: 4.6 KB
Line 
1BSDX26 ; IHS/OIT/HMW - WINDOWS SCHEDULING RPCS ; 11/18/10 5:36pm
2 ;;1.42;BSDX;;Sep 29, 2010
3 ; Change History:
4 ; 3101023 - UJO/SMH - Addition of restartable transaction; relocation of tx.
5 ; --> Thanks to Zach Gonzalez and Rick Marshall
6 ; 3101205 - UJO/SMH - Extensive refactoring.
7 ;
8 ; Error Reference:
9 ; -1: Appt ID is not a number
10 ; -2: Appt IEN is not in ^BSDXAPPT
11 ; -3: FM Failure to file WP field in ^BSDXAPPT
12 ;
13EDITAPTD(BSDXY,BSDXAPTID,BSDXNOTE) ;EP
14 ;Entry point for debugging
15 ;
16 D DEBUG^%Serenji("EDITAPT^BSDX26(.BSDXY,BSDXAPTID,BSDXNOTE)")
17 Q
18UT ; Unit Tests
19 ; Test 1: Make sure this damn thing works
20 N ZZZ
21 N %H S %H=$H
22 N NOTE S NOTE="New Note "_%H
23 D EDITAPT(.ZZZ,188,NOTE)
24 I ^BSDXAPPT(188,1,1,0)'=NOTE W "ERROR",! B
25 ; Test 2: Test Errors -1 and -2
26 N ZZZ
27 N NOTE S NOTE="Nothing important"
28 D EDITAPT(.ZZZ,"BLAHBLAH",NOTE)
29 I +^BSDXTMP($J,1)'=-1 W "ERROR IN -1",! B
30 D EDITAPT(.ZZZ,298734322,NOTE)
31 I +^BSDXTMP($J,1)'=-2 W "ERROR IN -2",! B
32 ; Test 4: M Error
33 N bsdxdie S bsdxdie=1
34 D EDITAPT(.ZZZ,188,NOTE)
35 I +^BSDXTMP($J,1)'=-100 W "ERROR IN -100",! B
36 ; Test 5: Trestart
37 N bsdxrestart S bsdxrestart=1
38 N %H S %H=$H
39 N NOTE S NOTE="New Note "_%H
40 D EDITAPT(.ZZZ,188,NOTE)
41 I ^BSDXAPPT(188,1,1,0)'=NOTE W "ERROR in TRESTART",! B
42 ; Test for Hosp Location Update
43 N DATE S DATE=$$NOW^XLFDT()
44 D APPADD^BSDX07(.ZZZ,DATE,DATE+.001,3,"Dr Office",30,"Old Note",1)
45 N APPID S APPID=+$P(^BSDXTMP($J,1),U)
46 D EDITAPT(.ZZZ,APTID,"New Note")
47 I ^BSDXAPPT(APTID,1,1,0)'="New Note" W "Error in HL Section",! B
48 I $P(^SC(2,"S",DATE,1,1,0),U,4)'="New Note" W "Error in HL Section",! B
49 QUIT
50 ;
51EDITAPT(BSDXY,BSDXAPTID,BSDXNOTE) ;EP Edit appointment (only note text can be edited)
52 ; Called by RPC: BSDX EDIT APPOINTMENT
53 ;
54 ; Edits Appointment Text in BSDX APPOINTMENT file & Hosp Location (44) file
55 ;
56 ; Parameters:
57 ; - BSDXY: Global Return (RPC must be set to Global Array)
58 ; - BSDXAPTID: Appointment IEN in BSDX APPOINTMENT
59 ; - BSDXNOTE: New note
60 ;
61 ; Return:
62 ; ADO.net Recordset having 1 field: ERRORID
63 ; If Okay: -1; otherwise, positive integer with message
64 ;
65 ; Return Array; set Return and clear array
66 S BSDXY=$NA(^BSDXTMP($J))
67 K ^BSDXTMP($J)
68 ; ET
69 N $ET S $ET="G ETRAP^BSDX26"
70 ; Set up basic DUZ variables
71 D ^XBKVAR
72 ; Counter
73 N BSDXI S BSDXI=0
74 ; Header Node
75 S ^BSDXTMP($J,BSDXI)="T00020ERRORID"_$C(30)
76 ; Restartable txn for GT.M. Restored vars are Params + BSDXI.
77 TSTART (BSDXY,BSDXAPTID,BSDXNOTE,BSDXI):T="BSDX EDIT APPOINTMENT^BSDX26"
78 ;
79 ;;;test for error inside transaction. See if %ZTER works
80 I $G(bsdxdie) S X=1/0
81 ;;;test
82 ;;;test for TRESTART
83 I $G(bsdxrestart) K bsdxrestart TRESTART
84 ;;;test
85 ;
86 ; Validate Appointment ID
87 I '+BSDXAPTID D ERR(BSDXI,"-1~BSDX26: Invalid Appointment ID") QUIT
88 I '$D(^BSDXAPPT(BSDXAPTID,0)) D ERR(BSDXI,"-2~BSDX26: Invalid Appointment ID") QUIT
89 ; Put the WP in decendant fields from the root to file as a WP field
90 S BSDXNOTE(.5)=BSDXNOTE,BSDXNOTE=""
91 I $D(BSDXNOTE(0)) S BSDXNOTE(.5)=BSDXNOTE(0) K BSDXNOTE(0)
92 N BSDXMSG ; Message in case of error in filing.
93 I $D(BSDXNOTE(.5)) D
94 . D WP^DIE(9002018.4,BSDXAPTID_",",1,"","BSDXNOTE","BSDXMSG")
95 I $D(BSDXMSG) D ERR(BSDXI,"-3~BSDX26: Fileman failure to file data into 9002018.4") QUIT
96 ;
97 ; Now file in file 44:
98 N PTIEN S PTIEN=$$GET1^DIQ(9002018.4,BSDXAPTID,".05","I") ; Patient IEN
99 N HLIEN S HLIEN=$$GET1^DIQ(9002018.4,BSDXAPTID,".07:.04","I") ; HL Location IEN pointed to by Resource ID
100 N DATE S DATE=+^BSDXAPPT(BSDXAPTID,0) ; Date of APPT
101 N BSDXRES S BSDXRES=0 ; Result
102 ; Update Note only if we have a linked hospital location.
103 I HLIEN S BSDXRES=$$UPDATENOTE^BSDXAPI(PTIEN,HLIEN,DATE,BSDXNOTE(.5))
104 ; If we get an error (denoted by -1 in BSDXRES), return error to client
105 I BSDXRES<0 D ERR(BSDXI,"-4~BSDX26: BSDXAPI reports an error: "_BSDXRES) QUIT
106 ;Return Recordset
107 TCOMMIT
108 S BSDXI=BSDXI+1
109 S ^BSDXTMP($J,BSDXI)="-1"_$C(30)
110 S BSDXI=BSDXI+1
111 S ^BSDXTMP($J,BSDXI)=$C(31)
112 QUIT
113 ;
114ERR(BSDXI,BSDXERR) ;Error processing
115 S BSDXI=BSDXI+1
116 S BSDXERR=$TR(BSDXERR,"^","~")
117 I $TL>0 TROLLBACK
118 S ^BSDXTMP($J,BSDXI)=BSDXERR_$C(30)
119 S BSDXI=BSDXI+1
120 S ^BSDXTMP($J,BSDXI)=$C(31)
121 QUIT
122 ;
123ETRAP ;EP Error trap entry
124 N $ET S $ET="D ^%ZTER HALT" ; Emergency Error Trap
125 I $TL>0 TROLLBACK
126 D ^%ZTER
127 S $EC=""
128 I '$D(BSDXI) N BSDXI S BSDXI=0
129 D ERR(BSDXI,"-100~BSDX26 Error: "_$G(%ZTERZE))
130 Q
Note: See TracBrowser for help on using the repository browser.