Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: DGQESC2

DGQESC2.m

Go to the documentation of this file.
  1. DGQESC2 ;ALB/JFP - VIC OUTPATIENT CLINIC SCAN ROUTINE ; 03/29/2004
  1. ;;5.3;Registration;**73,568,725,1015**;Aug 13, 1993;Build 21
  1. ;;Per VHA Directive 10-93-142, this routine should not be modified.
  1. ;
  1. ENO ; -- Entry Point
  1. N DIR,Y
  1. ;
  1. S DIR(0)="YA"
  1. S DIR("A")="Download Clinics patients to the VIC card station: "
  1. S DIR("B")="NO"
  1. S DIR("?")="Enter yes to download data."
  1. D ^DIR
  1. I Y D Q
  1. .; -- New Variables
  1. .N VAUTD,VAUTNI,VAUTC
  1. .N DATE,DFNARR,CNT,Y,ERR,SDATE,EDATE,DFN,RESULTS
  1. .N DIVFLAG,DIVISION,SELDIV
  1. .N DGSUB,DGJ,DGUTD,DGWD,DGDV,ZTSTOP
  1. .; -- Set Variables
  1. .S VAUTD=1 ; -- All divisions selected
  1. .D NOW^%DTC S DATE=%
  1. .S DFNARR="^TMP(""DGQE-DFN"","_$J_")"
  1. .K @DFNARR
  1. .S CNT=0
  1. .; -- Check for multi divisional hospital
  1. .I $P(^DG(43,1,"GL"),"^",2)=1 D Q:Y=-1
  1. ..D DIVISION^VAUTOMA
  1. .; -- Check for Clinics within division or all
  1. .S VAUTNI=2
  1. .D CLINIC^VAUTOMA
  1. .I Y=-1 Q
  1. .; -- Download for date range
  1. .S ERR=$$SDATE^DGQESC0()
  1. .I ERR=-1 Q
  1. .S SDATE=ERR
  1. .S ERR=$$EDATE^DGQESC0(ERR)
  1. .I ERR=-1 Q
  1. .S EDATE=ERR
  1. .S DIR(0)="YA"
  1. .; -- Task off job
  1. .S DIR("A")="Task job: "
  1. .S DIR("B")="YES"
  1. .S DIR("?")="Enter YES/NO to determine whether job is tasked"
  1. .D ^DIR
  1. .Q:$D(DIRUT)
  1. .I Y D Q
  1. ..D BATCH
  1. ..I '$D(ZTSK) Q
  1. ..W !,"Card(s) queued, task number = "_ZTSK
  1. .D OUTSCAN
  1. Q
  1. ;
  1. EXIT ; -- Finish Process
  1. I '$D(ZTQUEUED)&($P(RESULTS,"^",1)=0) W !!,CNT_" Outpatients down loaded to VIC work station"
  1. K @DFNARR
  1. Q
  1. ;
  1. OUTSCAN ; Scan the clinics for appointments to create VIC cards
  1. ;
  1. N CLINIC,CLINDATE,DPTINFO,I,CLNARRAY,DGARRAY,DGDIV,SDCNT S I=1
  1. K ^TMP($J,"SDAMA"),^TMP($J,"SDAMA301")
  1. ;
  1. I '$D(ZTQUEUED) W !!,"Note: Each Dot equals a clinic",!
  1. I VAUTC,VAUTD D
  1. .S CLINIC=0 F S CLINIC=$O(^SC(CLINIC)) Q:'CLINIC D
  1. ..I $P(^SC(CLINIC,0),U,3)="C" D CBLD3(CLINIC)
  1. ;
  1. I VAUTC,'VAUTD S DGDIV="" D
  1. .S DGDIV="" F S DGDIV=$O(VAUTD(DGDIV)) Q:'DGDIV D
  1. ..S CLINIC=0 F S CLINIC=$O(^SC(CLINIC)) Q:'CLINIC D
  1. ...I $P(^SC(CLINIC,0),U,3)="C",$P(^SC(CLINIC,0),U,15)=DGDIV D CBLD3(CLINIC)
  1. ;
  1. I 'VAUTC S CLINIC=0 F S CLINIC=$O(VAUTC(CLINIC)) Q:'CLINIC D CBLD3(CLINIC)
  1. ;
  1. D SDAMA,BLDTMP,BLDHL7
  1. K DGARRAY,SDCNT,^TMP($J,"SDAMA301"),^TMP($J,"SDAMA")
  1. Q
  1. CBLD3(CLINIC) ; Build array of specified Clinics for specified Divisions
  1. S CLNARRAY(I)=$G(CLNARRAY(I))_CLINIC_";"
  1. I $L(CLNARRAY(I))>120 S I=I+1
  1. I '$D(ZTQUEUED) W "."
  1. Q
  1. ;
  1. SDAMA ; Build TMP Global with Appointment API Data for Report
  1. S DGARRAY(1)=SDATE_";"_EDATE
  1. S DGARRAY("FLDS")="2;3"
  1. F I=1:1 Q:'$D(CLNARRAY(I)) D
  1. .S DGARRAY(2)=CLNARRAY(I)
  1. .I $$SDAPI^SDAMA301(.DGARRAY)>0 M ^TMP($J,"SDAMA")=^TMP($J,"SDAMA301")
  1. .K ^TMP($J,"SDAMA301")
  1. Q
  1. BLDHL7 ; -- Building HL7 batch message
  1. S DFN=""
  1. F S DFN=$O(@DFNARR@(DFN)) Q:'DFN S CNT=CNT+1
  1. S RESULTS=$$EVENT^DGQEHL72("A08",DFNARR)
  1. I '$D(ZTQUEUED)&($P(RESULTS,"^",1)=-1) D
  1. .W !,"Clinic patients not downloaded. Error - ",$P(RESULTS,"^",2)
  1. ; -- Clean up variables
  1. D EXIT
  1. Q
  1. ;
  1. BLDTMP ;
  1. ; -- Building Temporary Storage Data
  1. S (ZTSTOP,CLINIC)=0 F S CLINIC=$O(^TMP($J,"SDAMA",CLINIC)) Q:'CLINIC!(ZTSTOP) D
  1. .I $$S^%ZTLOAD S ZTSTOP=1 Q
  1. .S DFN=0 F S DFN=$O(^TMP($J,"SDAMA",CLINIC,DFN)) Q:'DFN D
  1. ..S CLINDATE=0 F S CLINDATE=$O(^TMP($J,"SDAMA",CLINIC,DFN,CLINDATE)) Q:'CLINDATE D
  1. ...I $P($P(^TMP($J,"SDAMA",CLINIC,DFN,CLINDATE),U,3),";")="R" S @DFNARR@(DFN)=""
  1. Q
  1. ;
  1. CHKDIV ; -- Check to see if clinic is part of Division selected
  1. ; -- re-sequences array
  1. S DGSUB="" F DGJ=1:1 S DGSUB=$O(VAUTD(DGSUB)) Q:DGSUB="" S DGUTD(DGJ)=$G(VAUTD(DGSUB))
  1. ;
  1. S DIVFLAG=0
  1. S DGWD=CLINIC
  1. I DGWD S DGDV=$S('$D(^SC(DGWD,0)):0,+$P(^(0),"^",15):$P(^(0),"^",15),1:$O(^DG(40.8,0)))
  1. I DGDV=0 S DIVFLAG=0 Q
  1. S DIVISION=$P($G(^DG(40.8,DGDV,0)),U,1)
  1. I DIVISION="" S DIVFLAG=0 Q
  1. ;W !,"DIVISION = ",DIVISION
  1. F DGJ=1:1 S SELDIV=DGUTD(DGJ) D Q:'$D(DGUTD(DGJ+1))
  1. .;W !,"SELDIV = ",SELDIV
  1. .I SELDIV=DIVISION S DIVFLAG=1 Q
  1. Q
  1. ;
  1. BATCH ; -- Entry point for placing cards on hold
  1. N ZTRTN,ZTDESC,ZTIO,ZTDTH,ZTSAVE,G
  1. ;
  1. S ZTRTN="OUTSCAN^DGQESC2"
  1. S ZTDESC="Download Outpatients to VIC work station via HL7"
  1. S ZTIO=""
  1. K ZTDTH
  1. ;D NOW^%DTC S ZTDTH=%
  1. F G="VAUTD","VAUTC","CNT","DFNARR","SDATE","EDATE" S:$D(@G) ZTSAVE(G)=""
  1. S ZTSAVE("VAUTD(")="",ZTSAVE("VAUTC(")=""
  1. D ^%ZTLOAD
  1. Q
  1. ;
  1. END ; -- End of Code
  1. Q
  1. ;