- DGENRPT5 ;ALB/DW,LBD,GAH,PHH - EGT Impact Report Utility; 06/21/2007
- ;;5.3;Registration;**568,725,758,1015**;Aug 13,1993;Build 21
- ;
- ;
- Q
- GETAPPT(TYPE) ; Set up array of Patient IENs for SD API to process
- N VETARRAY,PIEN,PNAME,RCNT,ACNT,DGARRAY,SDCNT,I
- S ACNT=1,RCNT=0
- S PNAME="" F S PNAME=$O(^TMP($J,TYPE,PNAME)) Q:PNAME="" D
- .S PIEN=0 F S PIEN=$O(^TMP($J,TYPE,PNAME,PIEN)) Q:'PIEN D
- ..S RCNT=RCNT+1,VETARRAY(ACNT)=$G(VETARRAY(ACNT))_PIEN_";"
- ..; Group DFNs by no more than twenty records
- ..I RCNT>19 S ACNT=ACNT+1,RCNT=0
- ;
- ; Call SD API by array of Patient DFNs
- F I=1:1 Q:'$D(VETARRAY(I)) D
- .S DGARRAY("FLDS")="1;2;3;10",DGARRAY(4)=VETARRAY(I)
- .S SDCNT=$$SDAPI^SDAMA301(.DGARRAY)
- .I SDCNT<0 D
- ..N ERR,ERROR,CNT
- ..S ERR=$O(^TMP($J,"SDAMA301",""))
- ..D
- ...I ERR=101 S ERROR="Appt. DB unavail. Try later" Q
- ...I ERR=115 S ERROR="Invalid reqst, Call help desk" Q
- ...I ERR=117 S ERROR="Error: Check RSA error log" Q
- ...I ERR=113 S ERROR="Bad appt,pat stat fltr combo" Q
- ...I ERR=109 S ERROR="Invalid appt status filter" Q
- ...S ERROR=^TMP($J,"SDAMA301",ERR)
- ..F CNT=1:1:$L(VETARRAY(I),";")-1 S ^TMP($J,"SDAMA",$P(VETARRAY(I),";",CNT),"ERROR")=ERROR
- .;
- .I SDCNT>0 M ^TMP($J,"SDAMA")=^TMP($J,"SDAMA301")
- .K ^TMP($J,"SDAMA301")
- .K DGARRAY
- Q
- ;
- BLDUTL(DFN) ; Build Utility Global Entries for records processed
- Q:'$D(^TMP($J,"SDAMA",DFN))
- N CLIEN,APPTDT,NODE,APPTNUM S APPTNUM=1
- S CLIEN=0 F S CLIEN=$O(^TMP($J,"SDAMA",DFN,CLIEN)) Q:'CLIEN D
- .S APPTDT=0 F S APPTDT=$O(^TMP($J,"SDAMA",DFN,CLIEN,APPTDT)) Q:'APPTDT D
- ..Q:APPTDT'>DT
- ..S NODE=^TMP($J,"SDAMA",DFN,CLIEN,APPTDT)
- ..S ^UTILITY("VASD",$J,APPTNUM,"E")=$$FMTE^DILIBF($P(NODE,U),"5U")_U_$P($P(NODE,U,2),";",2)_U_U_$P($P(NODE,U,10),";",2)
- ..S ^UTILITY("VASD",$J,APPTNUM,"I")=NODE,APPTNUM=APPTNUM+1
- K ^TMP($J,"SDAMA",DFN)
- Q
- DGENRPT5 ;ALB/DW,LBD,GAH,PHH - EGT Impact Report Utility; 06/21/2007
- +1 ;;5.3;Registration;**568,725,758,1015**;Aug 13,1993;Build 21
- +2 ;
- +3 ;
- +4 QUIT
- GETAPPT(TYPE) ; Set up array of Patient IENs for SD API to process
- +1 NEW VETARRAY,PIEN,PNAME,RCNT,ACNT,DGARRAY,SDCNT,I
- +2 SET ACNT=1
- SET RCNT=0
- +3 SET PNAME=""
- FOR
- SET PNAME=$ORDER(^TMP($JOB,TYPE,PNAME))
- IF PNAME=""
- QUIT
- Begin DoDot:1
- +4 SET PIEN=0
- FOR
- SET PIEN=$ORDER(^TMP($JOB,TYPE,PNAME,PIEN))
- IF 'PIEN
- QUIT
- Begin DoDot:2
- +5 SET RCNT=RCNT+1
- SET VETARRAY(ACNT)=$GET(VETARRAY(ACNT))_PIEN_";"
- +6 ; Group DFNs by no more than twenty records
- +7 IF RCNT>19
- SET ACNT=ACNT+1
- SET RCNT=0
- End DoDot:2
- End DoDot:1
- +8 ;
- +9 ; Call SD API by array of Patient DFNs
- +10 FOR I=1:1
- IF '$DATA(VETARRAY(I))
- QUIT
- Begin DoDot:1
- +11 SET DGARRAY("FLDS")="1;2;3;10"
- SET DGARRAY(4)=VETARRAY(I)
- +12 SET SDCNT=$$SDAPI^SDAMA301(.DGARRAY)
- +13 IF SDCNT<0
- Begin DoDot:2
- +14 NEW ERR,ERROR,CNT
- +15 SET ERR=$ORDER(^TMP($JOB,"SDAMA301",""))
- +16 Begin DoDot:3
- +17 IF ERR=101
- SET ERROR="Appt. DB unavail. Try later"
- QUIT
- +18 IF ERR=115
- SET ERROR="Invalid reqst, Call help desk"
- QUIT
- +19 IF ERR=117
- SET ERROR="Error: Check RSA error log"
- QUIT
- +20 IF ERR=113
- SET ERROR="Bad appt,pat stat fltr combo"
- QUIT
- +21 IF ERR=109
- SET ERROR="Invalid appt status filter"
- QUIT
- +22 SET ERROR=^TMP($JOB,"SDAMA301",ERR)
- End DoDot:3
- +23 FOR CNT=1:1:$LENGTH(VETARRAY(I),";")-1
- SET ^TMP($JOB,"SDAMA",$PIECE(VETARRAY(I),";",CNT),"ERROR")=ERROR
- End DoDot:2
- +24 ;
- +25 IF SDCNT>0
- MERGE ^TMP($JOB,"SDAMA")=^TMP($JOB,"SDAMA301")
- +26 KILL ^TMP($JOB,"SDAMA301")
- +27 KILL DGARRAY
- End DoDot:1
- +28 QUIT
- +29 ;
- BLDUTL(DFN) ; Build Utility Global Entries for records processed
- +1 IF '$DATA(^TMP($JOB,"SDAMA",DFN))
- QUIT
- +2 NEW CLIEN,APPTDT,NODE,APPTNUM
- SET APPTNUM=1
- +3 SET CLIEN=0
- FOR
- SET CLIEN=$ORDER(^TMP($JOB,"SDAMA",DFN,CLIEN))
- IF 'CLIEN
- QUIT
- Begin DoDot:1
- +4 SET APPTDT=0
- FOR
- SET APPTDT=$ORDER(^TMP($JOB,"SDAMA",DFN,CLIEN,APPTDT))
- IF 'APPTDT
- QUIT
- Begin DoDot:2
- +5 IF APPTDT'>DT
- QUIT
- +6 SET NODE=^TMP($JOB,"SDAMA",DFN,CLIEN,APPTDT)
- +7 SET ^UTILITY("VASD",$JOB,APPTNUM,"E")=$$FMTE^DILIBF($PIECE(NODE,U),"5U")_U_$PIECE($PIECE(NODE,U,2),";",2)_U_U_$PIECE($PIECE(NODE,U,10),";",2)
- +8 SET ^UTILITY("VASD",$JOB,APPTNUM,"I")=NODE
- SET APPTNUM=APPTNUM+1
- End DoDot:2
- End DoDot:1
- +9 KILL ^TMP($JOB,"SDAMA",DFN)
- +10 QUIT