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

DVBAREN1.m

Go to the documentation of this file.
  1. DVBAREN1 ;ALB/JLU;NEW 7131 REQ FOR NON-ADMIT VETS;9/20/94
  1. ;;2.7;AMIE;**14**;Apr 10, 1995
  1. ;this routine contains the logic to search for admissions, appointments, dispositions, and stop codes.
  1. ;
  1. OLD ;this is the main entry point.
  1. S DVBANL=0
  1. I DVBCHK="A" D A1,COLADM
  1. I DVBCHK="N" D N1,COLAPT,COLLOG,COLSTP
  1. I DVBCHK="B" D B1,COLADM,COLAPT,COLLOG,COLSTP
  1. K DVBAWARN
  1. Q
  1. A1 ;writes header statement for admission dates
  1. S VAR(1,0)="0,0,0,2:1,1^The following is a list of Admission dates for "_$P(DFN,U,2)
  1. D WR^DVBAUTL4("VAR")
  1. K VAR
  1. Q
  1. ;
  1. N1 ;writes the header statement for activity dates
  1. S VAR(1,0)="0,0,0,2:1,1^The following is a list of activity dates for "_$P(DFN,U,2)
  1. D WR^DVBAUTL4("VAR")
  1. K VAR
  1. Q
  1. ;
  1. B1 ;writes the header statement for both admission and activity dates
  1. S VAR(1,0)="0,0,0,2:1,1^The following is a list of Admission and Activity dates for "_$P(DFN,U,2)
  1. D WR^DVBAUTL4("VAR")
  1. K VAR
  1. Q
  1. ;
  1. COLADM ;gathers the admission info. and stores in to the ^TMP global
  1. I DVBBDT=0 DO
  1. .N X,X1,X2
  1. .S X1=0
  1. .F X=1:1 S X1=$O(^DGPM("ATID1",+DFN,X1)) Q:'X1 D ADMSET(X1)
  1. .Q
  1. I DVBBDT>0 DO
  1. .N DVBBDT1,DVBEDT1,X,X1,X2
  1. .S DVBBDT1=9999999.9999999-(DVBBDT-.0000001)
  1. .S DVBEDT1=9999999.9999999-DVBEDT
  1. .S X1=DVBEDT1
  1. .F X=1:1 S X1=$O(^DGPM("ATID1",+DFN,X1)) Q:'X1!(X1>DVBBDT1) D ADMSET(X1)
  1. .Q
  1. Q
  1. ;
  1. ADMSET(A) ;starts the process of setting up the ^TMP global
  1. ;A is the internal entry number of the admission in the patient movement
  1. ;file.
  1. N X2,X3
  1. S X2=$O(^DGPM("ATID1",+DFN,A,0))
  1. S X3=$P(^DGPM(X2,0),U,4)
  1. Q:X3']""
  1. D SET(A,9999999.9999999-A,"ADMISSION",$P(^DG(405.1,X3,0),U,1),X2)
  1. S DVBANL=DVBANL+1
  1. Q
  1. ;
  1. COLAPT ;gathers the appointment information
  1. I DVBBDT=0 DO
  1. .N X,X1,X2
  1. .S X1=0
  1. .F X=1:1 S X1=$O(^DPT(+DFN,"S",X1)) Q:'X1 D APTSET(X1)
  1. .Q
  1. I DVBBDT>0 DO
  1. .N X,X1
  1. .S X1=DVBBDT-.0000001
  1. .F X=1:1 S X1=$O(^DPT(+DFN,"S",X1)) Q:'X1!(X1>DVBEDT) D APTSET(X1)
  1. .Q
  1. Q
  1. ;
  1. APTSET(A) ;begins to set up the ^TMP global for appointments
  1. N X2
  1. S X2=$P(^DPT(+DFN,"S",A,0),U,1)
  1. S X2=$S($D(^SC(X2,0)):$P(^(0),U,1),1:"Unknown")
  1. D SET(9999999.9999999-X1,X1,"Appointment",X2)
  1. S DVBANL=DVBANL+1
  1. Q
  1. ;
  1. COLSTP ;gathers the stop code information
  1. N DVBQUERY,DVBDFR,DVBDTO,DVBA,DVBA1,SDOE,SDOE0,DVBZERR
  1. S DVBDFR=$S(DVBBDT>0:DVBBDT,1:1),DVBDTO=$S(DVBBDT>0:DVBEDT\1+.99,1:9999999)
  1. ;
  1. D OPEN^SDQ(.DVBQUERY,"DVBZERR") Q:'$G(DVBQUERY)
  1. D INDEX^SDQ(.DVBQUERY,"PATIENT/DATE","SET","DVBZERR")
  1. D SCANCB^SDQ(.DVBQUERY,"I $P(SDOE0,U,3) S ^TMP(""DVBENC"",$J,+SDOE0)=$G(^TMP(""DVBENC"",$J,+SDOE0))+1","SET","DVBZERR")
  1. D PAT^SDQ(.DVBQUERY,+DFN,"SET","DVBZERR")
  1. D DATE^SDQ(.DVBQUERY,DVBDFR,DVBDTO,"SET","DVBZERR")
  1. D ACTIVE^SDQ(.DVBQUERY,"TRUE","SET","DVBZERR")
  1. K ^TMP("DVBENC",$J)
  1. D SCAN^SDQ(.DVBQUERY,"FORWARD","DVBZERR")
  1. D CLOSE^SDQ(.DVBQUERY)
  1. ;
  1. S DVBA=0 F S DVBA=$O(^TMP("DVBENC",$J,DVBA)) Q:'DVBA S DVBA1=^(DVBA) D
  1. . D SET(9999999.9999999-DVBA,DVBA,"Stop Code(s)",DVBA1_" Stops")
  1. . S DVBANL=DVBANL+1
  1. K ^TMP("DVBENC",$J)
  1. Q
  1. ;
  1. COLLOG ;gathers the disposition information
  1. I DVBBDT>0 DO
  1. .N DVBBDT1,DVBEDT1,DVBA,DVBA1,DVBA2,DVBVAR
  1. .S DVBBDT1=9999999.9999999-(DVBBDT-.0000001)
  1. .S DVBEDT1=9999999.9999999-DVBEDT
  1. .S DVBA1=DVBEDT1
  1. .F DVBA=1:1 S DVBA1=$O(^DPT(+DFN,"DIS",DVBA1)) Q:'DVBA1!(DVBA1>DVBBDT1) D DISSET(DVBA1)
  1. .Q
  1. I DVBBDT=0 DO
  1. .N DVBA,DVBA1,DVBA2
  1. .S DVBA1=0
  1. .F DVBA=1:1 S DVBA1=$O(^DPT(+DFN,"DIS",DVBA1)) Q:'DVBA1 D DISSET(DVBA1)
  1. .Q
  1. Q
  1. ;
  1. DISSET(DVBA2) ;begins to set up the ^TMP with dispositions
  1. I '$D(^DPT(+DFN,"DIS",0)),'$D(DVBAWARN) DO
  1. .S VAR(1,0)="1,0,0,2:1,0^There is a problem with the Disposition Login information. Contact IRM"
  1. .D WR^DVBAUTL4("VAR")
  1. .K VAR
  1. .D CONTMES^DVBCUTL4
  1. .S DVBAWARN=""
  1. I $D(^DPT(+DFN,"DIS",0)) DO ;**Bullet Proof
  1. .K ^UTILITY("DIQ1",$J)
  1. .S DIC="^DPT(",DA=+DFN,DR=1000,DA(2.101)=DVBA2
  1. .S DR(2.101)=1,DIQ(0)="E"
  1. .D EN^DIQ1
  1. .K DIQ,DIC,DR,DA
  1. .D SET(DVBA2,9999999.9999999-DVBA2,"Disposition Login",^UTILITY("DIQ1",$J,2.101,DVBA2,1,"E"))
  1. .S DVBANL=DVBANL+1
  1. Q
  1. ;
  1. SET(IDT,CDT,TYP,FTYP,X2) ;
  1. N VAR1
  1. S $P(VAR1," ",22)=""
  1. S Y=CDT
  1. D DD^%DT
  1. S ^TMP("DVBA",$J,IDT,TYP)=Y_$E(VAR1,1,23-$L(Y))_TYP_": "_FTYP_"^"_$S($D(X2):X2,1:"")
  1. Q
  1. ;