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

DVBAREG1.m

Go to the documentation of this file.
  1. DVBAREG1 ;ALB/JLU;557/THM-REQ FOR ADMITTED VETS ; 10/29/90 7:53 AM
  1. ;;2.7;AMIE;**14**;Apr 10, 1995
  1. EN ;this is the main entry point for the driver
  1. D TERM
  1. I '$D(DVBAQUIT) DO
  1. .F D BODY Q:$D(DVBAQUIT)
  1. .Q
  1. D EXIT^DVBAUTIL
  1. Q
  1. ;
  1. TERM ;this subroutine will set various necessary variables
  1. ;
  1. K DVBAQUIT
  1. D DUZ2^DVBAUTIL
  1. Q:$D(DVBAQUIT)
  1. D NOPARM^DVBAUTL2
  1. Q:$D(DVBAQUIT)
  1. D HOME^%ZIS
  1. Q:$D(DVBAQUIT)
  1. S OPER=$S($D(^VA(200,+DUZ,0)):$P(^(0),U,1),1:"Unknown")
  1. S HD="PATIENT LOOKUP"
  1. S LOC=$S($D(^DIC(4,+DUZ(2),0)):$P(^(0),U,1),1:"")
  1. S HNAME=$$SITE^DVBCUTL4()
  1. S DVBAENTR=0
  1. Q
  1. ;
  1. BODY ;this subroutine is a subdriver for this functionality
  1. S DVBAENTR=0
  1. D UNLOCK^DVBAUTL6(DVBAENTR) ;unlocks the record
  1. D CLEAN^DVBAREG2 ;cleans up some variables
  1. D PAGE^DVBAREG2 ;checks for bottom of the screen or page
  1. D SET1^DVBAREG3 ;sets a few variables
  1. S DFN=$$PAT^DVBAREG3() ;function call to get the patient
  1. I DFN=0 S DVBAQUIT=1 Q
  1. D SET2^DVBAREG3 ;sets up patient information variables
  1. D CLEAR^DVBAUTL4
  1. D DTRNG^DVBAREG2(DFN) ;gets the date range
  1. I $D(DVBAQUIT)!($D(DVBASTOP)) Q
  1. I DVBBDT>0 S DVBCHK=$$CHK(DFN,DVBBDT,DVBEDT)
  1. I DVBBDT=0 S DVBCHK=$$CHK(DFN,2010101,DT)
  1. D CLEAR^DVBAUTL4
  1. I DVBCHK=0 D ERR^DVBAUTL6(DVBBDT) S DVBASTOP=1 Q
  1. I DVBCHK="B" D QUEST1(DFN) Q:$D(DVBAQUIT)
  1. D OLD^DVBAREN1
  1. D DISPLAY
  1. Q:$D(DVBAQUIT)
  1. ;
  1. ;*The following line of code was removed as part of the coding to allow
  1. ;* Admission and Activity 7131s with the same date
  1. ;I $D(DVBANS) S DVBDOC=$$DOC^DVBAREG3(DVBANS)
  1. I '$D(DVBANS) DO SRCH I $D(DVBASTOP)!($D(DVBAQUIT))!('$D(DVBAENTR)) Q
  1. I $D(DVBANS) D SELECT^DVBAREG2
  1. Q:$D(DVBASTOP)!($D(DVBAQUIT))
  1. D ^DVBARQP
  1. D UNLOCK^DVBAUTL6(DVBAENTR)
  1. Q
  1. ;
  1. CHK(A,B,C) ;checks for the existance of admissions, appointments, dispositions
  1. ;or stop codes
  1. ;A is the DFN of the Patient
  1. ;B is the beginning date
  1. ;C is the ending date
  1. ;If all is selected then B and C should be dates that encompise all
  1. ;possible dates
  1. ;the date ranges provided must iclude the +/-for end of days
  1. N ADM,APT,DISP,SPCOD,B1,C1,C2,DVBADM,DVBAPT,DVBDISP,DVBSPCOD,DVBENC,DVBZERR
  1. S (DVBADM,DVBAPT,DVBDISP,DVBSPCOD)=0
  1. S B1=9999999.9999999-B
  1. S C1=9999999.9999999-C
  1. S ADM=$O(^DGPM("APTT1",+A,B))
  1. I ADM,ADM'>C S DVBADM=1
  1. S APT=$O(^DPT(+A,"S",B))
  1. I APT,APT'>C S DVBAPT=1
  1. S DISP=$O(^DPT(+A,"DIS",C1))
  1. I DISP,DISP'>B1 S DVBDISP=1
  1. ; Scheduling conversion
  1. S SPCOD=$$EXOE^SDOE(+A,B,9999999,,"DVBZERR")
  1. I SPCOD D GETGEN^SDOE(SPCOD,"DVBENC","DVBZERR") S SPCOD=$G(DVBENC(0))\1
  1. ;
  1. I SPCOD,SPCOD'>C S DVBSPCOD=1
  1. I DVBADM&((DVBAPT)!(DVBDISP)!(DVBSPCOD)) Q "B"
  1. I DVBADM Q "A"
  1. I DVBAPT!(DVBDISP)!(DVBSPCOD) Q "N"
  1. Q 0
  1. ;
  1. QUEST1(DFN) ;ask user which they wish to see admission or non
  1. S DIR("A")="Which would you prefer"
  1. S DIR("A",1)=$P(DFN,U,2)_" has both Admission and Non Admission information."
  1. S DIR(0)="SM^A:Admissions;N:Non Admissions;B:Both"
  1. D ^DIR
  1. K DIR
  1. I $D(DTOUT)!($D(DUOUT))!(X="") S DVBAQUIT=1 Q
  1. S DVBCHK=Y
  1. Q
  1. ;
  1. DISPLAY ;displays the patient information to the user. Also asks the user
  1. ;to select which info.
  1. N X1,X2,X3,X4,VAR1
  1. I DVBANL=1 D SINGLE^DVBAREG2 Q
  1. K DVBANS
  1. S X2=$O(^TMP("DVBA",$J,0))
  1. I 'X2 S DVBASTOP=1 Q
  1. S $P(VAR1," ",5)=""
  1. S (X1,DVBCNT)=0
  1. F DO Q:$D(DVBASTOP)!($D(DVBANS))
  1. .S XTYPE=""
  1. .F S XTYPE=$O(^TMP("DVBA",$J,X2,XTYPE)) Q:XTYPE="" DO
  1. ..S X1=X1+1
  1. ..S DVBCNT=DVBCNT+1
  1. ..S VAR(DVBCNT,0)="0,0,0,1,0^"_X1_$E(VAR1,1,5-$L(X1))_$P(^TMP("DVBA",$J,X2,XTYPE),U,1)
  1. ..I '(X1#12)!($O(^TMP("DVBA",$J,X2,XTYPE))=""&'$O(^TMP("DVBA",$J,X2))) DO
  1. ...D WR^DVBAUTL4("VAR")
  1. ...K VAR
  1. ...S DVBCNT=0
  1. ...D CONT^DVBAREG2
  1. .S X2=$O(^TMP("DVBA",$J,X2))
  1. .I '$D(DVBANS),('X2) S DVBASTOP=1 Q
  1. .Q
  1. I $D(DVBANS) DO
  1. .S (X3,X4)=0,(DVBTYPE,DVBDOC)=""
  1. .F Q:+X3=+DVBANS S X4=$O(^TMP("DVBA",$J,X4)) Q:X4="" DO
  1. ..F Q:+X3=+DVBANS S DVBTYPE=$O(^TMP("DVBA",$J,X4,DVBTYPE)) Q:DVBTYPE="" S X3=X3+1
  1. .S DVBANS=X4
  1. .S DVBDOC=$S(DVBTYPE["ADMISSION":"A",1:"L")
  1. .Q
  1. K XTYPE
  1. Q
  1. ;
  1. SRCH ;searches the 7131 file for an existing 7131 request.
  1. K DA,Y,DVBASTOP,DVBAENTR
  1. D DICW^DVBAUTIL
  1. S VAR(1,0)="0,0,0,2,0^Searching file for existing 7131 requests for "_PNAM
  1. D WR^DVBAUTL4("VAR")
  1. K VAR
  1. S DIC="^DVB(396,",DIC(0)="EM",X=SSN
  1. I DVBCHK'="B",DVBBDT=0 S DIC("S")=$S(DVBCHK="A":"I $P(^(2),U,10)=""A""",1:"I $P(^(2),U,10)=""L"""),DVBDOC=$S(DVBCHK="A":"A",1:"L")
  1. I DVBCHK'="B",DVBBDT>0 S DIC("S")=$S(DVBCHK="A":"I $P(^(2),U,10)=""A""",1:"I $P(^(2),U,10)=""L""")_",$P(^(0),U,4)>(DVBBDT-.0000001),$P(^(0),U,4)<(DVBEDT+.0000001)"
  1. D ^DIC
  1. K DIC
  1. S DVBAY=Y
  1. I DVBAY<0 DO Q
  1. .S VAR(1,0)="0,0,0,2:2,0^No selection made!"
  1. .D WR^DVBAUTL4("VAR")
  1. .K VAR
  1. .D CONTMES^DVBCUTL4
  1. .S DVBASTOP=1
  1. .Q
  1. I DVBAY>0 DO
  1. .I '$$LOCK^DVBAUTL6(+DVBAY) S DVBASTOP=1 Q
  1. .S (ZI,DA,DVBAIFN)=+DVBAY
  1. .S DVBREQDT=$P(^DVB(396,DA,0),U,4)
  1. .D ALERT^DVBAREG2(+DVBAY)
  1. .D ASK^DVBAREG2
  1. .Q:$D(DVBAQUIT)!($D(DVBASTOP))
  1. .S ONFILE=0
  1. .S DVBAENTR=+DVBAY
  1. .S DVBDOC=$P(^DVB(396,DVBAENTR,2),U,10)
  1. .I DVBDOC["A" S ADMNUM=$$ADM(DVBREQDT,+DFN)
  1. .I STAT'="" D ALERT1^DVBAREG2
  1. .I $D(DVBAQUIT) K DVBAEDT
  1. .I ONFILE=1 S DVBASTOP=1 Q
  1. .Q
  1. K DVBAY
  1. Q
  1. ;
  1. ADM(A,B) ;This entry point will return the IEN in DGPM for the patient
  1. ;and admission date given. A will be the admission date and B will
  1. ;be the DFN of the patient.
  1. ;
  1. N X
  1. S A=9999999.9999999-A
  1. S X=$O(^DGPM("ATID1",+B,A,0))
  1. I X DO
  1. .I '$D(^DGPM(X,0)) S X=""
  1. .Q
  1. I X="" Q 0
  1. Q X