[613] | 1 | DGQESC2 ;ALB/JFP - VIC OUTPATIENT CLINIC SCAN ROUTINE ; 03/29/2004
|
---|
| 2 | ;;5.3;Registration;**73,568,725**;Aug 13, 1993;Build 12
|
---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | ENO ; -- Entry Point
|
---|
| 6 | N DIR,Y
|
---|
| 7 | ;
|
---|
| 8 | S DIR(0)="YA"
|
---|
| 9 | S DIR("A")="Download Clinics patients to the VIC card station: "
|
---|
| 10 | S DIR("B")="NO"
|
---|
| 11 | S DIR("?")="Enter yes to download data."
|
---|
| 12 | D ^DIR
|
---|
| 13 | I Y D Q
|
---|
| 14 | .; -- New Variables
|
---|
| 15 | .N VAUTD,VAUTNI,VAUTC
|
---|
| 16 | .N DATE,DFNARR,CNT,Y,ERR,SDATE,EDATE,DFN,RESULTS
|
---|
| 17 | .N DIVFLAG,DIVISION,SELDIV
|
---|
| 18 | .N DGSUB,DGJ,DGUTD,DGWD,DGDV,ZTSTOP
|
---|
| 19 | .; -- Set Variables
|
---|
| 20 | .S VAUTD=1 ; -- All divisions selected
|
---|
| 21 | .D NOW^%DTC S DATE=%
|
---|
| 22 | .S DFNARR="^TMP(""DGQE-DFN"","_$J_")"
|
---|
| 23 | .K @DFNARR
|
---|
| 24 | .S CNT=0
|
---|
| 25 | .; -- Check for multi divisional hospital
|
---|
| 26 | .I $P(^DG(43,1,"GL"),"^",2)=1 D Q:Y=-1
|
---|
| 27 | ..D DIVISION^VAUTOMA
|
---|
| 28 | .; -- Check for Clinics within division or all
|
---|
| 29 | .S VAUTNI=2
|
---|
| 30 | .D CLINIC^VAUTOMA
|
---|
| 31 | .I Y=-1 Q
|
---|
| 32 | .; -- Download for date range
|
---|
| 33 | .S ERR=$$SDATE^DGQESC0()
|
---|
| 34 | .I ERR=-1 Q
|
---|
| 35 | .S SDATE=ERR
|
---|
| 36 | .S ERR=$$EDATE^DGQESC0(ERR)
|
---|
| 37 | .I ERR=-1 Q
|
---|
| 38 | .S EDATE=ERR
|
---|
| 39 | .S DIR(0)="YA"
|
---|
| 40 | .; -- Task off job
|
---|
| 41 | .S DIR("A")="Task job: "
|
---|
| 42 | .S DIR("B")="YES"
|
---|
| 43 | .S DIR("?")="Enter YES/NO to determine whether job is tasked"
|
---|
| 44 | .D ^DIR
|
---|
| 45 | .Q:$D(DIRUT)
|
---|
| 46 | .I Y D Q
|
---|
| 47 | ..D BATCH
|
---|
| 48 | ..I '$D(ZTSK) Q
|
---|
| 49 | ..W !,"Card(s) queued, task number = "_ZTSK
|
---|
| 50 | .D OUTSCAN
|
---|
| 51 | Q
|
---|
| 52 | ;
|
---|
| 53 | EXIT ; -- Finish Process
|
---|
| 54 | I '$D(ZTQUEUED)&($P(RESULTS,"^",1)=0) W !!,CNT_" Outpatients down loaded to VIC work station"
|
---|
| 55 | K @DFNARR
|
---|
| 56 | Q
|
---|
| 57 | ;
|
---|
| 58 | OUTSCAN ; Scan the clinics for appointments to create VIC cards
|
---|
| 59 | ;
|
---|
| 60 | N CLINIC,CLINDATE,DPTINFO,I,CLNARRAY,DGARRAY,DGDIV,SDCNT S I=1
|
---|
| 61 | K ^TMP($J,"SDAMA"),^TMP($J,"SDAMA301")
|
---|
| 62 | ;
|
---|
| 63 | I '$D(ZTQUEUED) W !!,"Note: Each Dot equals a clinic",!
|
---|
| 64 | I VAUTC,VAUTD D
|
---|
| 65 | .S CLINIC=0 F S CLINIC=$O(^SC(CLINIC)) Q:'CLINIC D
|
---|
| 66 | ..I $P(^SC(CLINIC,0),U,3)="C" D CBLD3(CLINIC)
|
---|
| 67 | ;
|
---|
| 68 | I VAUTC,'VAUTD S DGDIV="" D
|
---|
| 69 | .S DGDIV="" F S DGDIV=$O(VAUTD(DGDIV)) Q:'DGDIV D
|
---|
| 70 | ..S CLINIC=0 F S CLINIC=$O(^SC(CLINIC)) Q:'CLINIC D
|
---|
| 71 | ...I $P(^SC(CLINIC,0),U,3)="C",$P(^SC(CLINIC,0),U,15)=DGDIV D CBLD3(CLINIC)
|
---|
| 72 | ;
|
---|
| 73 | I 'VAUTC S CLINIC=0 F S CLINIC=$O(VAUTC(CLINIC)) Q:'CLINIC D CBLD3(CLINIC)
|
---|
| 74 | ;
|
---|
| 75 | D SDAMA,BLDTMP,BLDHL7
|
---|
| 76 | K DGARRAY,SDCNT,^TMP($J,"SDAMA301"),^TMP($J,"SDAMA")
|
---|
| 77 | Q
|
---|
| 78 | CBLD3(CLINIC) ; Build array of specified Clinics for specified Divisions
|
---|
| 79 | S CLNARRAY(I)=$G(CLNARRAY(I))_CLINIC_";"
|
---|
| 80 | I $L(CLNARRAY(I))>120 S I=I+1
|
---|
| 81 | I '$D(ZTQUEUED) W "."
|
---|
| 82 | Q
|
---|
| 83 | ;
|
---|
| 84 | SDAMA ; Build TMP Global with Appointment API Data for Report
|
---|
| 85 | S DGARRAY(1)=SDATE_";"_EDATE
|
---|
| 86 | S DGARRAY("FLDS")="2;3"
|
---|
| 87 | F I=1:1 Q:'$D(CLNARRAY(I)) D
|
---|
| 88 | .S DGARRAY(2)=CLNARRAY(I)
|
---|
| 89 | .I $$SDAPI^SDAMA301(.DGARRAY)>0 M ^TMP($J,"SDAMA")=^TMP($J,"SDAMA301")
|
---|
| 90 | .K ^TMP($J,"SDAMA301")
|
---|
| 91 | Q
|
---|
| 92 | BLDHL7 ; -- Building HL7 batch message
|
---|
| 93 | S DFN=""
|
---|
| 94 | F S DFN=$O(@DFNARR@(DFN)) Q:'DFN S CNT=CNT+1
|
---|
| 95 | S RESULTS=$$EVENT^DGQEHL72("A08",DFNARR)
|
---|
| 96 | I '$D(ZTQUEUED)&($P(RESULTS,"^",1)=-1) D
|
---|
| 97 | .W !,"Clinic patients not downloaded. Error - ",$P(RESULTS,"^",2)
|
---|
| 98 | ; -- Clean up variables
|
---|
| 99 | D EXIT
|
---|
| 100 | Q
|
---|
| 101 | ;
|
---|
| 102 | BLDTMP ;
|
---|
| 103 | ; -- Building Temporary Storage Data
|
---|
| 104 | S (ZTSTOP,CLINIC)=0 F S CLINIC=$O(^TMP($J,"SDAMA",CLINIC)) Q:'CLINIC!(ZTSTOP) D
|
---|
| 105 | .I $$S^%ZTLOAD S ZTSTOP=1 Q
|
---|
| 106 | .S DFN=0 F S DFN=$O(^TMP($J,"SDAMA",CLINIC,DFN)) Q:'DFN D
|
---|
| 107 | ..S CLINDATE=0 F S CLINDATE=$O(^TMP($J,"SDAMA",CLINIC,DFN,CLINDATE)) Q:'CLINDATE D
|
---|
| 108 | ...I $P($P(^TMP($J,"SDAMA",CLINIC,DFN,CLINDATE),U,3),";")="R" S @DFNARR@(DFN)=""
|
---|
| 109 | Q
|
---|
| 110 | ;
|
---|
| 111 | CHKDIV ; -- Check to see if clinic is part of Division selected
|
---|
| 112 | ; -- re-sequences array
|
---|
| 113 | S DGSUB="" F DGJ=1:1 S DGSUB=$O(VAUTD(DGSUB)) Q:DGSUB="" S DGUTD(DGJ)=$G(VAUTD(DGSUB))
|
---|
| 114 | ;
|
---|
| 115 | S DIVFLAG=0
|
---|
| 116 | S DGWD=CLINIC
|
---|
| 117 | I DGWD S DGDV=$S('$D(^SC(DGWD,0)):0,+$P(^(0),"^",15):$P(^(0),"^",15),1:$O(^DG(40.8,0)))
|
---|
| 118 | I DGDV=0 S DIVFLAG=0 Q
|
---|
| 119 | S DIVISION=$P($G(^DG(40.8,DGDV,0)),U,1)
|
---|
| 120 | I DIVISION="" S DIVFLAG=0 Q
|
---|
| 121 | ;W !,"DIVISION = ",DIVISION
|
---|
| 122 | F DGJ=1:1 S SELDIV=DGUTD(DGJ) D Q:'$D(DGUTD(DGJ+1))
|
---|
| 123 | .;W !,"SELDIV = ",SELDIV
|
---|
| 124 | .I SELDIV=DIVISION S DIVFLAG=1 Q
|
---|
| 125 | Q
|
---|
| 126 | ;
|
---|
| 127 | BATCH ; -- Entry point for placing cards on hold
|
---|
| 128 | N ZTRTN,ZTDESC,ZTIO,ZTDTH,ZTSAVE,G
|
---|
| 129 | ;
|
---|
| 130 | S ZTRTN="OUTSCAN^DGQESC2"
|
---|
| 131 | S ZTDESC="Download Outpatients to VIC work station via HL7"
|
---|
| 132 | S ZTIO=""
|
---|
| 133 | K ZTDTH
|
---|
| 134 | ;D NOW^%DTC S ZTDTH=%
|
---|
| 135 | F G="VAUTD","VAUTC","CNT","DFNARR","SDATE","EDATE" S:$D(@G) ZTSAVE(G)=""
|
---|
| 136 | S ZTSAVE("VAUTD(")="",ZTSAVE("VAUTC(")=""
|
---|
| 137 | D ^%ZTLOAD
|
---|
| 138 | Q
|
---|
| 139 | ;
|
---|
| 140 | END ; -- End of Code
|
---|
| 141 | Q
|
---|
| 142 | ;
|
---|