| 1 | SDVWAPP ; VWSD VOE APP FOR SDAPI AND MAKE APPOINTMENT RPC routines
 | 
|---|
| 2 |  ;;5.3;Scheduling;**502**;Aug 13, 1993  ;Build 14
 | 
|---|
| 3 |  ; Copyright (C) 2007 WorldVistA
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  ; This program is free software; you can redistribute it and/or modify
 | 
|---|
| 6 |  ; it under the terms of the GNU General Public License as published by
 | 
|---|
| 7 |  ; the Free Software Foundation; either version 2 of the License, or
 | 
|---|
| 8 |  ; (at your option) any later version.
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 |  ; This program is distributed in the hope that it will be useful,
 | 
|---|
| 11 |  ; but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
|---|
| 12 |  ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
|---|
| 13 |  ; GNU General Public License for more details.
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  ; You should have received a copy of the GNU General Public License
 | 
|---|
| 16 |  ; along with this program; if not, write to the Free Software
 | 
|---|
| 17 |  ; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 | SDAPI(RESULTS,SDARRAY) ;;
 | 
|---|
| 20 |  ; SDAPI APP TEST PROGRAM ( RETURN LIST OF APPOINTMENTS)
 | 
|---|
| 21 |  ; VERSION 3.1
 | 
|---|
| 22 |  N FIRST,SSN,SDDATE,SDLOCATE,PATIENTN,SSNPATN,AJJ3VIS,SDARRAY2,COUNTER
 | 
|---|
| 23 |  N MSGCTRL,IER,RETURN,ORDRSORT,SSN,SDLOCATE,SDDATE,SDCOUNT,ACKCODE
 | 
|---|
| 24 |  S MSGCTRL=0
 | 
|---|
| 25 |  ;;;;S SDARRAY(1)="Nov 6,2006;Nov 9,2006"
 | 
|---|
| 26 |     I $G(SDARRAY(1))="" S RESULTS(0)="UNDEFINED DATE RANGE ELEMENT" Q
 | 
|---|
| 27 |  ;;;;;;S SDARRAY(3)="R;I" 
 | 
|---|
| 28 |  I $G(SDARRAY(3))="" S RESULTS(0)="UNDEFINED ELEMENT 3 = "_"R;I" Q
 | 
|---|
| 29 |  ;;;;;;S SDARRAY(2)="VWVOE RADIOLOGY CLINIC" ;EXTERNAL NAME
 | 
|---|
| 30 |  I ($G(SDARRAY(2))="")&($G(SDARRAY(4))="") S RESULTS(0)="UNDEFINED ELEMENTS 2 AND 4 TOGETHER" Q
 | 
|---|
| 31 |  ;AS WELL AS S SDARRAY(4)="100001298" ;EXTERNAL PATIENT ID AS SSN
 | 
|---|
| 32 |  ;;;;;;S SDARRAY("MAX")=3 
 | 
|---|
| 33 |  I $G(SDARRAY("MAX"))="" S RESULTS(0)="UNDEFINED MAX RETURN ELEMENT" Q
 | 
|---|
| 34 |  ;;;;;;;S SDARRAY("FLDS")="1;2;3"
 | 
|---|
| 35 |  I $G(SDARRAY("FLDS"))="" S RESULTS(0)="UNDEFINED FLDS ELEMENT" Q
 | 
|---|
| 36 |  S RESULTS(0)="UP TO HERE SDAPI"
 | 
|---|
| 37 |  ;Q
 | 
|---|
| 38 |  S IER=$$TRNSDAPI^SDVWHLE2(.SDARRAY,.MSGCTRL)
 | 
|---|
| 39 |  I (IER="OK")&(MSGCTRL'=0) D
 | 
|---|
| 40 |  .S AJJ3CNT=0
 | 
|---|
| 41 | CHKAGAIN .I AJJ3CNT>27 Q
 | 
|---|
| 42 |  .I $D(^XTMP(MSGCTRL,"RETURN"))=0 H 3 S AJJ3CNT=AJJ3CNT+1 G CHKAGAIN
 | 
|---|
| 43 |  .;W !,"HERE"
 | 
|---|
| 44 |  .S RETURN=^XTMP(MSGCTRL,"RETURN") ; THIS INCLUDES ACK CODE AS AA OR AE
 | 
|---|
| 45 |  .S ACKCODE=$P(RETURN,"^",1)
 | 
|---|
| 46 |  .I ACKCODE="OK" D
 | 
|---|
| 47 |  ..;
 | 
|---|
| 48 |  ..S ORDRSORT=$P(RETURN,"^",2)
 | 
|---|
| 49 |  ..S SDCOUNT=$P(RETURN,"^",3)
 | 
|---|
| 50 |  ..I SDCOUNT>0 D
 | 
|---|
| 51 |  ...D
 | 
|---|
| 52 |  ....I $E(ORDRSORT,1,1)="P" D
 | 
|---|
| 53 |  .....S AJJ3VIS=0
 | 
|---|
| 54 |  .....F  S AJJ3VIS=$O(^XTMP(MSGCTRL,"SDAMA301",AJJ3VIS)) Q:AJJ3VIS=""  D
 | 
|---|
| 55 |  ......S SDARRAY2=^XTMP(MSGCTRL,"SDAMA301",AJJ3VIS)
 | 
|---|
| 56 |  ......S SSNPATN=$P(SDARRAY2,"^",1)
 | 
|---|
| 57 |  ......S SDLOCATE=$P(SDARRAY2,"^",2)
 | 
|---|
| 58 |  ......S SDDATE=$P(SDARRAY2,"^",3)
 | 
|---|
| 59 |  ......S FIRST=SSNPATN_"^"_SDLOCATE_"^"_SDDATE_"^"
 | 
|---|
| 60 |  ......S SDARRAY2=$P(SDARRAY2,FIRST,2)
 | 
|---|
| 61 |  ......S PATIENTN=$P(SSNPATN,"#",2)
 | 
|---|
| 62 |  ......S SSN=$P(SSNPATN,"#",1)
 | 
|---|
| 63 |  ......S COUNTER=(AJJ3VIS-1)*2
 | 
|---|
| 64 |  ......S RESULTS(COUNTER+1)="APPT/UNSCHED VISIT, PATIENT="_PATIENTN_" SSN="_SSN_" HOSP LOCATION="_SDLOCATE_" DATE/TIME="_SDDATE
 | 
|---|
| 65 |  ......S RESULTS(COUNTER+2)="                   DATA FIELDS="_SDARRAY2
 | 
|---|
| 66 |  ....I $E(ORDRSORT,1,1)="C" D
 | 
|---|
| 67 |  .....S AJJ3VIS=0
 | 
|---|
| 68 |  .....F  S AJJ3VIS=$O(^XTMP(MSGCTRL,"SDAMA301",AJJ3VIS)) Q:AJJ3VIS=""  D
 | 
|---|
| 69 |  ......S SDARRAY2=^XTMP(MSGCTRL,"SDAMA301",AJJ3VIS)
 | 
|---|
| 70 |  ......S SSNPATN=$P(SDARRAY2,"^",2)
 | 
|---|
| 71 |  ......S SDLOCATE=$P(SDARRAY2,"^",1)
 | 
|---|
| 72 |  ......S SDDATE=$P(SDARRAY2,"^",3)
 | 
|---|
| 73 |  ......S FIRST=SDLOCATE_"^"_SSNPATN_"^"_SDDATE_"^"
 | 
|---|
| 74 |  ......S SDARRAY2=$P(SDARRAY2,FIRST,2)
 | 
|---|
| 75 |  ......S PATIENTN=$P(SSNPATN,"#",2)
 | 
|---|
| 76 |  ......S SSN=$P(SSNPATN,"#",1)
 | 
|---|
| 77 |  ......S COUNTER=(AJJ3VIS-1)*2
 | 
|---|
| 78 |  ......S RESULTS(COUNTER+1)="APPT/UNSCHED VISIT, HOSP LOCATION="_SDLOCATE_" PATIENT="_PATIENTN_" SSN="_SSN_" DATE/TIME="_SDDATE
 | 
|---|
| 79 |  ......S RESULTS(COUNTER+2)="                   DATA FIELDS="_SDARRAY2
 | 
|---|
| 80 |  ..E  D
 | 
|---|
| 81 |  ...S RESULTS(1)="SDCOUNT="_SDCOUNT  ;LOOK AT ERRORS IN API CALL, ETC
 | 
|---|
| 82 |  E  D
 | 
|---|
| 83 |  . S RESULTS(1)=RETURN ; APP ACK CODE="AE". SOME OTHER ERRORS IN TRANSMISSION IN OTHER PIECES OF RETURN
 | 
|---|
| 84 |  S RESULTS(0)="MSGCTRL="_MSGCTRL ;;;;;;;;;W !,"MSGCTRL=",MSGCTRL
 | 
|---|
| 85 |  I (MSGCTRL'=0) K ^XTMP(MSGCTRL)
 | 
|---|
| 86 |  Q
 | 
|---|
| 87 | MKPI(RESULTS,SDARRAY1) ;
 | 
|---|
| 88 |  ;MAKE Appointment APP TEST PROGRAM
 | 
|---|
| 89 |  ;
 | 
|---|
| 90 |  N MSGCTRL,IER,RETURN,DUZ1
 | 
|---|
| 91 |  N PATIENTN,SSN,SD1,SC,STYP,OUTIN,SDVWNVAI,X,Y,X2,ACKCODE,SDARRAY
 | 
|---|
| 92 |  N AJJ3CNT
 | 
|---|
| 93 |  N VXSDNVAI
 | 
|---|
| 94 |  S MSGCTRL=0  ;
 | 
|---|
| 95 |  ;N DFN(SSN AND PATIENT NAME INSTEAD),SD1,SC(HOSP LOCATION (CLINIC) EXT FORMAT NAME INSTEAD,STYP,
 | 
|---|
| 96 |  ;N SDARRAY (DATE/TIMES IN EXTERNAL FORMAT),IER
 | 
|---|
| 97 |  I $G(SDARRAY1("PATIENTN"))="" S RESULTS(0)="NO DEFINED PATIENTN ELEMENT" Q
 | 
|---|
| 98 |  S PATIENTN=SDARRAY1("PATIENTN") ; S PATIENTN="ZZ PATIENT,TEST ONE"
 | 
|---|
| 99 |     S SDVWNVAI="D"  ; NON-VA TESTING HERE WITH DISABLING THE NEED FOR ICN
 | 
|---|
| 100 |  I $G(SDARRAY1("SSN"))="" S RESULTS(0)="NO DEFINED SSN ELEMENT" Q
 | 
|---|
| 101 |  S SSN=SDARRAY1("SSN")  ; S SSN=100001298 ; DFN=1 NON TEST PATRIENT FOR PFSS EVENT GENERATION
 | 
|---|
| 102 |  I $G(SDARRAY1("SD1"))="" S RESULTS(0)="NO DEFINED SD1 APPT DATE ELEMENT"
 | 
|---|
| 103 |  S SD1=SDARRAY1("SD1")  ; S SD1="JAN 24,2007@11:30" ; SD1=3070123.1130  
 | 
|---|
| 104 |  ;S X=SD1 D ^%DT S SD1=Y
 | 
|---|
| 105 |  I $G(SDARRAY1("SC"))="" S RESULTS(0)="NO DEFINED APPOINTMENT CLINIC ELEMENT" Q
 | 
|---|
| 106 |  S SC=SDARRAY1("SC")   ; "VWVOE RADIOLOGY CLINIC" ; S SC=3 
 | 
|---|
| 107 |  S STYP=3  ;SCHEDULED APPT
 | 
|---|
| 108 |  S OUTIN="O" ;for outpatient clinic
 | 
|---|
| 109 |  ;
 | 
|---|
| 110 |  D NOW^%DTC S X2=X\1 S Y=X2 D DD^%DT S SDARRAY("DATE NOW")=Y
 | 
|---|
| 111 |  ;D NOW^%DTC S X2=X\1 S Y=X2 D DD^%DT S SDARRAY("DATE NOW")=Y
 | 
|---|
| 112 |  S SDARRAY("APPT TYPE")=9
 | 
|---|
| 113 |     S SDARRAY("SCHED_REQ_TYPE")="O" ;'OTHER THAN NEXT AVAIABLE
 | 
|---|
| 114 |     S SDARRAY("NEXT APPT IND")=0 ;0 FOR NO
 | 
|---|
| 115 |     S SDARRAY("FOLLOWUP VISIT INDICATOR")=0  ; 0 FOR NO
 | 
|---|
| 116 |  ;CHECK FOR DUZ IN SDARRAY1("DUZ") FOR DATA ENTRY CLERK
 | 
|---|
| 117 |  I $G(SDARRAY1("DUZ"))="" S RESULTS(0)="NO DUZ ELEMENT RETURNED" Q
 | 
|---|
| 118 |  S DUZ1=SDARRAY1("DUZ")
 | 
|---|
| 119 |  ;GET NAME FOR DUZ IN NEW PERSON FILE
 | 
|---|
| 120 |  S SDARRAY("DATA ENTRY CLERK")=$P($G(^VA(200,DUZ1,0)),"^",1)
 | 
|---|
| 121 |     ;;;;;;;;;S SDARRAY("DATA ENTRY CLERK")="SCHLEHUBER,CAMERON" ; PERSON ON MACHINE MAKING APPT REMOTELY
 | 
|---|
| 122 |     ;THEN PARAMETERS CONVERTED TO INTERNAL VALUE
 | 
|---|
| 123 |     S RESULTS(0)="UP TO HERE MAKE APPT"
 | 
|---|
| 124 |  ;Q
 | 
|---|
| 125 |  S IER=$$TRNSMKPI^SDVWHLE1(PATIENTN,SSN,SD1,SC,STYP,.SDARRAY,OUTIN,.MSGCTRL,SDVWNVAI)
 | 
|---|
| 126 |  ;SDVWNVAI AS LAST PARAMETER PASSED
 | 
|---|
| 127 |  I (IER="OK")&(MSGCTRL'=0) D
 | 
|---|
| 128 |  .S AJJ3CNT=0
 | 
|---|
| 129 | CHKGAIN .I AJJ3CNT>8 Q
 | 
|---|
| 130 |  .I $D(^XTMP(MSGCTRL,"RETURN"))=0 H 3 S AJJ3CNT=AJJ3CNT+1 G CHKGAIN
 | 
|---|
| 131 |  .S RETURN=^XTMP(MSGCTRL,"RETURN") ; THIS INCLUDES ACK CODE AS AA OR AE
 | 
|---|
| 132 |  .S ACKCODE=$P(RETURN,"^",1)
 | 
|---|
| 133 |  .I ACKCODE="AA" D
 | 
|---|
| 134 |  ..S RESULTS(1)=ACKCODE_" MAKE APPT GOOD RETURN"
 | 
|---|
| 135 |  .E  D
 | 
|---|
| 136 |  ..;ACKCODE="AE". LOOK AT SOME OTHER ERRORS IN TRNSMISSION IN OTHER PIECES OF RETURN
 | 
|---|
| 137 |  ..S RESULTS(1)=ACKCODE_" RETURN="_RETURN
 | 
|---|
| 138 |  S RESULTS(0)="MSGCTRL="_MSGCTRL
 | 
|---|
| 139 |  I (MSGCTRL'=0) K ^XTMP(MSGCTRL,"RETURN")
 | 
|---|
| 140 |  Q
 | 
|---|