1 | TMGSDAM1 ;TMG/kst/APP For SDAPI AND MAKE APPOINTMENT RPC routines;1/9/09
|
---|
2 | ;;1.0;TMG-LIB;**1**;1/9/09
|
---|
3 | ;
|
---|
4 | ;"NOTE: Original header:
|
---|
5 | ;"SDVWAPP ; VWSD VOE APP FOR SDAPI AND MAKE APPOINTMENT RPC routines
|
---|
6 | ;" ; 1/1/07 SDVW*3*2;;;;;Build 8
|
---|
7 | ;"
|
---|
8 | ;"Moved to this namespace for customization
|
---|
9 | ;
|
---|
10 | ;"=======================================================================
|
---|
11 | ;" API -- Public Functions.
|
---|
12 | ;"=======================================================================
|
---|
13 | ;"SDAPI(RESULTS,SDARRAY)
|
---|
14 | ;
|
---|
15 | ;"=======================================================================
|
---|
16 | ;"Dependancies
|
---|
17 | ;"=======================================================================
|
---|
18 | ;
|
---|
19 | ;"=======================================================================
|
---|
20 | ;
|
---|
21 | SDAPI(RESULTS,SDARRAY) ;;
|
---|
22 | ;"Purpose: SDAPI APP TEST PROGRAM ( RETURN LIST OF APPOINTMENTS)
|
---|
23 | ;"VERSION 3.1
|
---|
24 | ;"Input: RESULTS -- PASS BY REFERENCE. An OUT PARAMETER.
|
---|
25 | ;" SDARRAY -- PASS BY REFERENCE. Example input:
|
---|
26 | ;" SDARRAY(1)="Nov 6,2006;Nov 9,2006"
|
---|
27 | ;" SDARRAY(2)="VWVOE RADIOLOGY CLINIC" (External Format)
|
---|
28 | ;" SDARRAY(3)="R;I"
|
---|
29 | ;" SDARRAY(4)="100001298" (EXTERNAL PATIENT ID AS SSN)
|
---|
30 | ;" SDARRAY("MAX")=3
|
---|
31 | ;" SDARRAY("FLDS")="1;2;3"
|
---|
32 | ;"Result: None (output placed in RESULTS var above)
|
---|
33 | ;
|
---|
34 | NEW FIRST,SSN,SDDATE,SDLOCATE,PATIENTN,SSNPATN,AJJ3VIS,SDARRAY2,COUNTER
|
---|
35 | NEW MSGCTRL,IER,RETURN,ORDRSORT,SSN,SDLOCATE,SDDATE,SDCOUNT,ACKCODE
|
---|
36 | ;
|
---|
37 | SET MSGCTRL=0
|
---|
38 | IF $GET(SDARRAY(1))="" SET RESULTS(0)="UNDEFINED DATE RANGE ELEMENT" QUIT
|
---|
39 | IF $GET(SDARRAY(3))="" SET RESULTS(0)="UNDEFINED ELEMENT 3 = "_"R;I" QUIT
|
---|
40 | IF ($GET(SDARRAY(2))="")&($GET(SDARRAY(4))="") SET RESULTS(0)="UNDEFINED ELEMENTS 2 AND 4 TOGETHER" QUIT
|
---|
41 | IF $GET(SDARRAY("MAX"))="" SET RESULTS(0)="UNDEFINED MAX RETURN ELEMENT" QUIT
|
---|
42 | IF $GET(SDARRAY("FLDS"))="" SET RESULTS(0)="UNDEFINED FLDS ELEMENT" QUIT
|
---|
43 | ;
|
---|
44 | SET IER=$$TRNSDAPI^SDVWHLE2(.SDARRAY,.MSGCTRL)
|
---|
45 | IF (IER="OK")&(MSGCTRL'=0) DO
|
---|
46 | . SET AJJ3CNT=0
|
---|
47 | CHKAGAIN ;
|
---|
48 | . IF AJJ3CNT>27 QUIT
|
---|
49 | . IF $D(^XTMP(MSGCTRL,"RETURN"))=0 HANG 3 SET AJJ3CNT=AJJ3CNT+1 G CHKAGAIN
|
---|
50 | . SET RETURN=^XTMP(MSGCTRL,"RETURN") ;" THIS INCLUDES ACK CODE AS AA OR AE
|
---|
51 | . SET ACKCODE=$P(RETURN,"^",1)
|
---|
52 | . IF ACKCODE="OK" DO
|
---|
53 | . . SET ORDRSORT=$P(RETURN,"^",2)
|
---|
54 | . . SET SDCOUNT=$P(RETURN,"^",3)
|
---|
55 | . . IF SDCOUNT>0 DO
|
---|
56 | . . . IF $E(ORDRSORT,1,1)="P" DO
|
---|
57 | . . . . SET AJJ3VIS=0
|
---|
58 | . . . . FOR SET AJJ3VIS=$O(^XTMP(MSGCTRL,"SDAMA301",AJJ3VIS)) QUIT:AJJ3VIS="" DO
|
---|
59 | . . . . . SET SDARRAY2=^XTMP(MSGCTRL,"SDAMA301",AJJ3VIS)
|
---|
60 | . . . . . SET SSNPATN=$P(SDARRAY2,"^",1)
|
---|
61 | . . . . . SET SDLOCATE=$P(SDARRAY2,"^",2)
|
---|
62 | . . . . . SET SDDATE=$P(SDARRAY2,"^",3)
|
---|
63 | . . . . . SET FIRST=SSNPATN_"^"_SDLOCATE_"^"_SDDATE_"^"
|
---|
64 | . . . . . SET SDARRAY2=$P(SDARRAY2,FIRST,2)
|
---|
65 | . . . . . SET PATIENTN=$P(SSNPATN,"#",2)
|
---|
66 | . . . . . SET SSN=$P(SSNPATN,"#",1)
|
---|
67 | . . . . . SET COUNTER=(AJJ3VIS-1)*2
|
---|
68 | . . . . . SET RESULTS(COUNTER+1)="APPT/UNSCHED VISIT, PATIENT="_PATIENTN_" SSN="_SSN_" HOSP LOCATION="_SDLOCATE_" DATE/TIME="_SDDATE
|
---|
69 | . . . . . SET RESULTS(COUNTER+2)=" DATA FIELDS="_SDARRAY2
|
---|
70 | . . . IF $E(ORDRSORT,1,1)="C" DO
|
---|
71 | . . . . SET AJJ3VIS=0
|
---|
72 | . . . . FOR SET AJJ3VIS=$O(^XTMP(MSGCTRL,"SDAMA301",AJJ3VIS)) QUIT:AJJ3VIS="" DO
|
---|
73 | . . . . . SET SDARRAY2=^XTMP(MSGCTRL,"SDAMA301",AJJ3VIS)
|
---|
74 | . . . . . SET SSNPATN=$P(SDARRAY2,"^",2)
|
---|
75 | . . . . . SET SDLOCATE=$P(SDARRAY2,"^",1)
|
---|
76 | . . . . . SET SDDATE=$P(SDARRAY2,"^",3)
|
---|
77 | . . . . . SET FIRST=SDLOCATE_"^"_SSNPATN_"^"_SDDATE_"^"
|
---|
78 | . . . . . SET SDARRAY2=$P(SDARRAY2,FIRST,2)
|
---|
79 | . . . . . SET PATIENTN=$P(SSNPATN,"#",2)
|
---|
80 | . . . . . SET SSN=$P(SSNPATN,"#",1)
|
---|
81 | . . . . . SET COUNTER=(AJJ3VIS-1)*2
|
---|
82 | . . . . . SET RESULTS(COUNTER+1)="APPT/UNSCHED VISIT, HOSP LOCATION="_SDLOCATE_" PATIENT="_PATIENTN_" SSN="_SSN_" DATE/TIME="_SDDATE
|
---|
83 | . . . . . SET RESULTS(COUNTER+2)=" DATA FIELDS="_SDARRAY2
|
---|
84 | . . ELSE DO
|
---|
85 | . . .SET RESULTS(1)="SDCOUNT="_SDCOUNT ;LOOK AT ERRORS IN API CALL, ETC
|
---|
86 | ELSE DO
|
---|
87 | . SET RESULTS(1)=RETURN ;" APP ACK CODE="AE". SOME OTHER ERRORS IN TRANSMISSION IN OTHER PIECES OF RETURN
|
---|
88 | SET RESULTS(0)="MSGCTRL="_MSGCTRL
|
---|
89 | IF (MSGCTRL'=0) KILL ^XTMP(MSGCTRL)
|
---|
90 | ;
|
---|
91 | QUIT
|
---|
92 | ;
|
---|
93 | MKPI(RESULTS,SDARRAY1) ;
|
---|
94 | ;"Purpose: MAKE Appointment APP TEST PROGRAM
|
---|
95 | ;"Input: RESULTS -- PASS BY REFERENCE. An OUT PARAMETER.
|
---|
96 | ;" SDARRAY1 -- PASS BY REFERENCE. Example input:
|
---|
97 | ;" SDARRAY1("PATIENTN")="ZZ PATIENT,TEST ONE"
|
---|
98 | ;" SDARRAY1("SSN")="100001298"
|
---|
99 | ;" SDARRAY1("SD1")="JAN 24,2007@11:30" vs. "3070123.1130" ??Which one??
|
---|
100 | ;" SDARRAY1("SC")="VWVOE RADIOLOGY CLINIC" vs "3" ??Which One??
|
---|
101 | ;" SDARRAY1("DUZ")="SCHLEHUBER,CAMERON"
|
---|
102 | ;
|
---|
103 | NEW MSGCTRL,IER,RETURN,DUZ1
|
---|
104 | NEW PATIENTN,SSN,SD1,SC,STYP,OUTIN,SDVWNVAI,X,Y,X2,ACKCODE,SDARRAY
|
---|
105 | NEW AJJ3CNT
|
---|
106 | NEW VXSDNVAI
|
---|
107 | SET MSGCTRL=0 ;
|
---|
108 | ;"NEW DFN(SSN AND PATIENT NAME INSTEAD),SD1,SC(HOSP LOCATION (CLINIC) EXT FORMAT NAME INSTEAD,STYP,
|
---|
109 | ;"NEW SDARRAY (DATE/TIMES IN EXTERNAL FORMAT),IER
|
---|
110 | IF $GET(SDARRAY1("PATIENTN"))="" SET RESULTS(0)="NO DEFINED PATIENTN ELEMENT" QUIT
|
---|
111 | SET PATIENTN=SDARRAY1("PATIENTN") ;" e.g. ZZ PATIENT,TEST ONE
|
---|
112 | SET SDVWNVAI="D" ;" NON-VA TESTING HERE WITH DISABLING THE NEED FOR ICN
|
---|
113 | IF $GET(SDARRAY1("SSN"))="" SET RESULTS(0)="NO DEFINED SSN ELEMENT" QUIT
|
---|
114 | SET SSN=SDARRAY1("SSN") ;" SET SSN=100001298 ; DFN=1 NON TEST PATRIENT FOR PFSS EVENT GENERATION
|
---|
115 | IF $GET(SDARRAY1("SD1"))="" SET RESULTS(0)="NO DEFINED SD1 APPT DATE ELEMENT"
|
---|
116 | SET SD1=SDARRAY1("SD1") ;" e.g. "JAN 24,2007@11:30" ; SD1=3070123.1130
|
---|
117 | ;SET X=SD1 DO ^%DT SET SD1=Y
|
---|
118 | IF $GET(SDARRAY1("SC"))="" SET RESULTS(0)="NO DEFINED APPOINTMENT CLINIC ELEMENT" QUIT
|
---|
119 | SET SC=SDARRAY1("SC") ; "VWVOE RADIOLOGY CLINIC ; SET SC=3
|
---|
120 | SET STYP=3 ;SCHEDULED APPT
|
---|
121 | SET OUTIN="O" ;for outpatient clinic
|
---|
122 | ;
|
---|
123 | DO NOW^%DTC SET X2=X\1 SET Y=X2 DO DD^%DT SET SDARRAY("DATE NOW")=Y
|
---|
124 | SET SDARRAY("APPT TYPE")=9
|
---|
125 | SET SDARRAY("SCHED_REQ_TYPE")="O" ;"OTHER THAN NEXT AVAIABLE
|
---|
126 | SET SDARRAY("NEXT APPT IND")=0 ;"0 FOR NO
|
---|
127 | SET SDARRAY("FOLLOWUP VISIT INDICATOR")=0 ;" 0 FOR NO
|
---|
128 | ;"CHECK FOR DUZ IN SDARRAY1("DUZ") FOR DATA ENTRY CLERK
|
---|
129 | IF $GET(SDARRAY1("DUZ"))="" SET RESULTS(0)="NO DUZ ELEMENT RETURNED" QUIT
|
---|
130 | SET DUZ1=SDARRAY1("DUZ")
|
---|
131 | ;"GET NAME FOR DUZ IN NEW PERSON FILE, e.g. "SCHLEHUBER,CAMERON" ; PERSON ON MACHINE MAKING APPT REMOTELY
|
---|
132 | SET SDARRAY("DATA ENTRY CLERK")=$P($GET(^VA(200,DUZ1,0)),"^",1)
|
---|
133 | ;"THEN PARAMETERS CONVERTED TO INTERNAL VALUE
|
---|
134 | ;
|
---|
135 | SET IER=$$TRNSMKPI^SDVWHLE1(PATIENTN,SSN,SD1,SC,STYP,.SDARRAY,OUTIN,.MSGCTRL,SDVWNVAI)
|
---|
136 | ;"SDVWNVAI AS LAST PARAMETER PASSED
|
---|
137 | IF (IER="OK")&(MSGCTRL'=0) DO
|
---|
138 | . SET AJJ3CNT=0
|
---|
139 | CHKGAIN . IF AJJ3CNT>8 QUIT
|
---|
140 | . IF $D(^XTMP(MSGCTRL,"RETURN"))=0 H 3 SET AJJ3CNT=AJJ3CNT+1 G CHKGAIN
|
---|
141 | . SET RETURN=^XTMP(MSGCTRL,"RETURN") ;" THIS INCLUDES ACK CODE AS AA OR AE
|
---|
142 | . SET ACKCODE=$P(RETURN,"^",1)
|
---|
143 | . IF ACKCODE="AA" DO
|
---|
144 | . . SET RESULTS(1)=ACKCODE_" MAKE APPT GOOD RETURN"
|
---|
145 | . ELSE DO
|
---|
146 | . . ;"ACKCODE="AE". LOOK AT SOME OTHER ERRORS IN TRNSMISSION IN OTHER PIECES OF RETURN
|
---|
147 | . . SET RESULTS(1)=ACKCODE_" RETURN="_RETURN
|
---|
148 | SET RESULTS(0)="MSGCTRL="_MSGCTRL
|
---|
149 | IF (MSGCTRL'=0) K ^XTMP(MSGCTRL,"RETURN")
|
---|
150 | MKDONE ;
|
---|
151 | QUIT
|
---|