- DVBCUTL6 ;ALB/GTS-AMIE C&P APPT LINK DISPLAY SUBRTNS ; 10/20/94 1:45 PM
- ;;2.7;AMIE;**1**;Apr 10, 1995
- ;
- ;** NOTICE: This routine is part of an implementation of a Nationally
- ;** Controlled Procedure. Local modifications to this routine
- ;** are prohibited per VHA Directive 10-93-142
- ;
- ;** Version Changes
- ; 2.7 - New routine (Enhc 13)
- ;
- LKHDOUT ;** Link MGNT screen hdr
- W @IOF
- W "AMIE/C&P Appointment Link Management",!!,"Current appointment links"
- W !,"Clinic",?32,"Date/Time",?51,"Status",!
- Q
- ;
- EXMOUT(LPDA) ;** Output exam
- W !!,"Exam: ",$P(^DVB(396.6,$P(^DVB(396.4,LPDA,0),U,3),0),U,2)
- W !,"Clinic",?32,"Date/Time",?49,"Status"
- Q
- ;
- EXMDISP(REQDA) ;** Output Open/Completed exams
- D EXMHD
- N DVBADA,DVBASTAT
- S DVBADA=""
- F S DVBADA=$O(^DVB(396.4,"C",REQDA,DVBADA)) Q:(DVBADA=""!($D(DTOUT)!$D(DUOUT))) DO
- .I $D(^DVB(396.4,DVBADA,0)) DO
- ..S DVBASTAT=$P(^DVB(396.4,DVBADA,0),U,4)
- ..D EXAMLST^DVBCUTA4(DVBADA,DVBASTAT)
- Q
- ;
- EXMHD ;** Exam header
- W @IOF
- N DVBALN
- S Y=$P(^DVB(396.3,REQDA,0),U,5)
- X ^DD("DD")
- W !!,"AMIE exams on 2507 request for: ",$P(^DPT($P(^DVB(396.3,REQDA,0),U,1),0),U,1)
- W !,"2507 Request Date Reported to MAS: ",Y
- S $P(DVBALN,"-",80)=""
- W !,DVBALN
- W !!,"Exam:",?40,"Status:"
- K Y
- Q
- ;
- APPTSEL(DVBADFN,APPTTYPE,REQDA,STRTDT,ENDDT) ;Select appt
- ;** APPTTYPE = appt type to select
- ;** STRTDT,ENDDT = selected date range
- ;
- ;** APPTSEL creates ^TMP = appt's of APPTTYPE in date range
- ;** ^TMP=appt dte-ext ^ Clinic-ext ^ Status-ext ^ appt dte-int
- W @IOF
- N TMPDA
- S STRTDT=STRTDT-.1,TMPDA=1
- S:+STRTDT<0 STRTDT=0
- S:'$D(ENDDT) ENDDT=""
- S:ENDDT="" ENDDT=9999999
- K STATUS,STATVAR
- I $D(^DPT(DVBADFN,"S")) DO
- .F S STRTDT=$O(^DPT(DVBADFN,"S",STRTDT)) Q:(STRTDT=""!(STRTDT>ENDDT)) DO
- ..I $P(^DPT(DVBADFN,"S",STRTDT,0),U,16)=APPTTYPE DO
- ...S TMPDA=TMPDA+1
- ...S DA=DVBADFN,DA(2.98)=STRTDT,DR="1900",DR(2.98)=".01",DIC=2
- ...S DIQ="DVBAARY" K ^UTILITY("DIQ",$J)
- ...D EN^DIQ1 K ^UTILITY("DIQ",$J)
- ...S Y=STRTDT X ^DD("DD")
- ...S STATVAR=$$STATUS^SDAM1(DVBADFN,STRTDT,$P(^DPT(DVBADFN,"S",STRTDT,0),U,1),^DPT(DVBADFN,"S",STRTDT,0))
- ...S STATUS=$P(STATVAR,";",3)
- ...S ^TMP("DVBC",$J,TMPDA)=Y_"^"_DVBAARY(2.98,STRTDT,.01)_"^"_STATUS_"^"_STRTDT
- ...K DVBAARY(2.98),Y,STATUS,STATVAR
- D ARYDISP
- Q
- ;
- ARYDISP ;** Display appts for selection
- ;** run APPTSEL before ARYDISP
- ;
- ;** DVBAAPT returned (= selected ^TMP node)
- ;
- K DA,DR,DIC,DIQ
- I '$D(DVBAMORE) N DVBAMORE
- I '$D(TMPDA) N TMPDA
- W !!!,"Select an appointment to link to the 2507 request",!
- W !,?1,"1",?4,"Display Current C&P Appointment Links"
- S ^TMP("DVBC",$J,1)=""
- F TMPDA=2:1 Q:'$D(^TMP("DVBC",$J,TMPDA)) DO
- .W !,?1,TMPDA,?4,$P(^TMP("DVBC",$J,TMPDA),U,1)
- .W ?23,$E($P(^TMP("DVBC",$J,TMPDA),U,2),1,22)
- .W:$D(^DVB(396.95,"AB",REQDA,$P(^TMP("DVBC",$J,TMPDA),U,4))) ?47,"*CL"
- .W ?51,$E($P(^TMP("DVBC",$J,TMPDA),U,3),1,27)
- .S DVBAMORE=$O(^TMP("DVBC",$J,TMPDA))
- .I +DVBAMORE'>0 D SELAPT
- .I (+DVBAMORE>0)&(TMPDA#5=0) D SELAPT
- S DVBAAPT=""
- I $D(Y) DO
- .S DVBAAPT=^TMP("DVBC",$J,+Y)
- .K ^TMP("DVBC",$J,+Y)
- Q
- ;
- SELAPT ;** Select Appt
- W !
- S DIR("A",1)="ENTER '^' TO STOP, OR"
- S DIR("A")="CHOOSE 1-"_TMPDA_": "
- S DIR(0)="NOA^1:"_TMPDA_"^I X["".""!('$D(^TMP(""DVBC"",$J,+Y))) K X"
- S DIR("?",1)="Select an appointment by entering its associated number."
- S DIR("?",2)=" *CL following Clinic means the appointment date is the"
- S DIR("?",2)=DIR("?",2)_" Current Date for"
- S DIR("?",3)=" an existing link."
- S DIR("?",4)="Enter '1' to see the current links to this 2507."
- S DIR("?")="Select from the numbers listed."
- D ^DIR
- I $D(DTOUT)!($D(DUOUT)) S TMPDA=9999,DVBAOUT=""
- S:+Y>1 TMPDA=9999
- W:+Y'>0 !
- I +Y=1 DO
- .W @IOF
- .D LNKARY^DVBCUTA3(REQDA,DVBADFN)
- .D LNKLIST^DVBCUTA3
- .S:TMPDA'>5 TMPDA=TMPDA-1
- .S:(TMPDA>5&(TMPDA#5=0)) TMPDA=TMPDA-5
- .S:(TMPDA>5&(TMPDA#5'=0)) TMPDA=TMPDA-1
- .D REFRSH^DVBCUTA4(TMPDA)
- .K Y
- I $D(Y),(+Y'>0) K Y
- K DIR,DTOUT,DUOUT
- Q
- ;
- LINKINF(REQDA,CURRAPT) ;** Display Link info
- N LINKNODE,LINKDA,INITDTE,ORIGDTE,VETDTE
- S LINKDA=""
- S LINKDA=$O(^DVB(396.95,"AB",REQDA,CURRAPT,LINKDA))
- S LINKNODE=^DVB(396.95,LINKDA,0)
- S INITDTE=$P(LINKNODE,U,1)
- S ORIGDTE=$P(LINKNODE,U,2)
- S VETDTE=$P(LINKNODE,U,5)
- I INITDTE'=CURRAPT DO
- .K Y
- .S Y=INITDTE
- .X ^DD("DD")
- .W !,"Initial Appt: ",?36,Y
- I ORIGDTE'=CURRAPT DO
- .K Y
- .S Y=ORIGDTE
- .X ^DD("DD")
- .W !,"Clock Stop Appt: ",?36,Y
- I VETDTE'=""&(VETDTE'=CURRAPT) DO
- .K Y
- .S Y=VETDTE
- .X ^DD("DD")
- .W !,"Last Veteran requested Appointment: ",?36,Y
- K Y
- S Y=CURRAPT
- X ^DD("DD")
- W !,"Current Appt: ",?36,Y
- K Y
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDVBCUTL6 4693 printed Mar 13, 2025@20:53:58 Page 2
- DVBCUTL6 ;ALB/GTS-AMIE C&P APPT LINK DISPLAY SUBRTNS ; 10/20/94 1:45 PM
- +1 ;;2.7;AMIE;**1**;Apr 10, 1995
- +2 ;
- +3 ;** NOTICE: This routine is part of an implementation of a Nationally
- +4 ;** Controlled Procedure. Local modifications to this routine
- +5 ;** are prohibited per VHA Directive 10-93-142
- +6 ;
- +7 ;** Version Changes
- +8 ; 2.7 - New routine (Enhc 13)
- +9 ;
- LKHDOUT ;** Link MGNT screen hdr
- +1 WRITE @IOF
- +2 WRITE "AMIE/C&P Appointment Link Management",!!,"Current appointment links"
- +3 WRITE !,"Clinic",?32,"Date/Time",?51,"Status",!
- +4 QUIT
- +5 ;
- EXMOUT(LPDA) ;** Output exam
- +1 WRITE !!,"Exam: ",$PIECE(^DVB(396.6,$PIECE(^DVB(396.4,LPDA,0),U,3),0),U,2)
- +2 WRITE !,"Clinic",?32,"Date/Time",?49,"Status"
- +3 QUIT
- +4 ;
- EXMDISP(REQDA) ;** Output Open/Completed exams
- +1 DO EXMHD
- +2 NEW DVBADA,DVBASTAT
- +3 SET DVBADA=""
- +4 FOR
- SET DVBADA=$ORDER(^DVB(396.4,"C",REQDA,DVBADA))
- if (DVBADA=""!($DATA(DTOUT)!$DATA(DUOUT)))
- QUIT
- Begin DoDot:1
- +5 IF $DATA(^DVB(396.4,DVBADA,0))
- Begin DoDot:2
- +6 SET DVBASTAT=$PIECE(^DVB(396.4,DVBADA,0),U,4)
- +7 DO EXAMLST^DVBCUTA4(DVBADA,DVBASTAT)
- End DoDot:2
- End DoDot:1
- +8 QUIT
- +9 ;
- EXMHD ;** Exam header
- +1 WRITE @IOF
- +2 NEW DVBALN
- +3 SET Y=$PIECE(^DVB(396.3,REQDA,0),U,5)
- +4 XECUTE ^DD("DD")
- +5 WRITE !!,"AMIE exams on 2507 request for: ",$PIECE(^DPT($PIECE(^DVB(396.3,REQDA,0),U,1),0),U,1)
- +6 WRITE !,"2507 Request Date Reported to MAS: ",Y
- +7 SET $PIECE(DVBALN,"-",80)=""
- +8 WRITE !,DVBALN
- +9 WRITE !!,"Exam:",?40,"Status:"
- +10 KILL Y
- +11 QUIT
- +12 ;
- APPTSEL(DVBADFN,APPTTYPE,REQDA,STRTDT,ENDDT) ;Select appt
- +1 ;** APPTTYPE = appt type to select
- +2 ;** STRTDT,ENDDT = selected date range
- +3 ;
- +4 ;** APPTSEL creates ^TMP = appt's of APPTTYPE in date range
- +5 ;** ^TMP=appt dte-ext ^ Clinic-ext ^ Status-ext ^ appt dte-int
- +6 WRITE @IOF
- +7 NEW TMPDA
- +8 SET STRTDT=STRTDT-.1
- SET TMPDA=1
- +9 if +STRTDT<0
- SET STRTDT=0
- +10 if '$DATA(ENDDT)
- SET ENDDT=""
- +11 if ENDDT=""
- SET ENDDT=9999999
- +12 KILL STATUS,STATVAR
- +13 IF $DATA(^DPT(DVBADFN,"S"))
- Begin DoDot:1
- +14 FOR
- SET STRTDT=$ORDER(^DPT(DVBADFN,"S",STRTDT))
- if (STRTDT=""!(STRTDT>ENDDT))
- QUIT
- Begin DoDot:2
- +15 IF $PIECE(^DPT(DVBADFN,"S",STRTDT,0),U,16)=APPTTYPE
- Begin DoDot:3
- +16 SET TMPDA=TMPDA+1
- +17 SET DA=DVBADFN
- SET DA(2.98)=STRTDT
- SET DR="1900"
- SET DR(2.98)=".01"
- SET DIC=2
- +18 SET DIQ="DVBAARY"
- KILL ^UTILITY("DIQ",$JOB)
- +19 DO EN^DIQ1
- KILL ^UTILITY("DIQ",$JOB)
- +20 SET Y=STRTDT
- XECUTE ^DD("DD")
- +21 SET STATVAR=$$STATUS^SDAM1(DVBADFN,STRTDT,$PIECE(^DPT(DVBADFN,"S",STRTDT,0),U,1),^DPT(DVBADFN,"S",STRTDT,0))
- +22 SET STATUS=$PIECE(STATVAR,";",3)
- +23 SET ^TMP("DVBC",$JOB,TMPDA)=Y_"^"_DVBAARY(2.98,STRTDT,.01)_"^"_STATUS_"^"_STRTDT
- +24 KILL DVBAARY(2.98),Y,STATUS,STATVAR
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +25 DO ARYDISP
- +26 QUIT
- +27 ;
- ARYDISP ;** Display appts for selection
- +1 ;** run APPTSEL before ARYDISP
- +2 ;
- +3 ;** DVBAAPT returned (= selected ^TMP node)
- +4 ;
- +5 KILL DA,DR,DIC,DIQ
- +6 IF '$DATA(DVBAMORE)
- NEW DVBAMORE
- +7 IF '$DATA(TMPDA)
- NEW TMPDA
- +8 WRITE !!!,"Select an appointment to link to the 2507 request",!
- +9 WRITE !,?1,"1",?4,"Display Current C&P Appointment Links"
- +10 SET ^TMP("DVBC",$JOB,1)=""
- +11 FOR TMPDA=2:1
- if '$DATA(^TMP("DVBC",$JOB,TMPDA))
- QUIT
- Begin DoDot:1
- +12 WRITE !,?1,TMPDA,?4,$PIECE(^TMP("DVBC",$JOB,TMPDA),U,1)
- +13 WRITE ?23,$EXTRACT($PIECE(^TMP("DVBC",$JOB,TMPDA),U,2),1,22)
- +14 if $DATA(^DVB(396.95,"AB",REQDA,$PIECE(^TMP("DVBC",$JOB,TMPDA),U,4)))
- WRITE ?47,"*CL"
- +15 WRITE ?51,$EXTRACT($PIECE(^TMP("DVBC",$JOB,TMPDA),U,3),1,27)
- +16 SET DVBAMORE=$ORDER(^TMP("DVBC",$JOB,TMPDA))
- +17 IF +DVBAMORE'>0
- DO SELAPT
- +18 IF (+DVBAMORE>0)&(TMPDA#5=0)
- DO SELAPT
- End DoDot:1
- +19 SET DVBAAPT=""
- +20 IF $DATA(Y)
- Begin DoDot:1
- +21 SET DVBAAPT=^TMP("DVBC",$JOB,+Y)
- +22 KILL ^TMP("DVBC",$JOB,+Y)
- End DoDot:1
- +23 QUIT
- +24 ;
- SELAPT ;** Select Appt
- +1 WRITE !
- +2 SET DIR("A",1)="ENTER '^' TO STOP, OR"
- +3 SET DIR("A")="CHOOSE 1-"_TMPDA_": "
- +4 SET DIR(0)="NOA^1:"_TMPDA_"^I X["".""!('$D(^TMP(""DVBC"",$J,+Y))) K X"
- +5 SET DIR("?",1)="Select an appointment by entering its associated number."
- +6 SET DIR("?",2)=" *CL following Clinic means the appointment date is the"
- +7 SET DIR("?",2)=DIR("?",2)_" Current Date for"
- +8 SET DIR("?",3)=" an existing link."
- +9 SET DIR("?",4)="Enter '1' to see the current links to this 2507."
- +10 SET DIR("?")="Select from the numbers listed."
- +11 DO ^DIR
- +12 IF $DATA(DTOUT)!($DATA(DUOUT))
- SET TMPDA=9999
- SET DVBAOUT=""
- +13 if +Y>1
- SET TMPDA=9999
- +14 if +Y'>0
- WRITE !
- +15 IF +Y=1
- Begin DoDot:1
- +16 WRITE @IOF
- +17 DO LNKARY^DVBCUTA3(REQDA,DVBADFN)
- +18 DO LNKLIST^DVBCUTA3
- +19 if TMPDA'>5
- SET TMPDA=TMPDA-1
- +20 if (TMPDA>5&(TMPDA#5=0))
- SET TMPDA=TMPDA-5
- +21 if (TMPDA>5&(TMPDA#5'=0))
- SET TMPDA=TMPDA-1
- +22 DO REFRSH^DVBCUTA4(TMPDA)
- +23 KILL Y
- End DoDot:1
- +24 IF $DATA(Y)
- IF (+Y'>0)
- KILL Y
- +25 KILL DIR,DTOUT,DUOUT
- +26 QUIT
- +27 ;
- LINKINF(REQDA,CURRAPT) ;** Display Link info
- +1 NEW LINKNODE,LINKDA,INITDTE,ORIGDTE,VETDTE
- +2 SET LINKDA=""
- +3 SET LINKDA=$ORDER(^DVB(396.95,"AB",REQDA,CURRAPT,LINKDA))
- +4 SET LINKNODE=^DVB(396.95,LINKDA,0)
- +5 SET INITDTE=$PIECE(LINKNODE,U,1)
- +6 SET ORIGDTE=$PIECE(LINKNODE,U,2)
- +7 SET VETDTE=$PIECE(LINKNODE,U,5)
- +8 IF INITDTE'=CURRAPT
- Begin DoDot:1
- +9 KILL Y
- +10 SET Y=INITDTE
- +11 XECUTE ^DD("DD")
- +12 WRITE !,"Initial Appt: ",?36,Y
- End DoDot:1
- +13 IF ORIGDTE'=CURRAPT
- Begin DoDot:1
- +14 KILL Y
- +15 SET Y=ORIGDTE
- +16 XECUTE ^DD("DD")
- +17 WRITE !,"Clock Stop Appt: ",?36,Y
- End DoDot:1
- +18 IF VETDTE'=""&(VETDTE'=CURRAPT)
- Begin DoDot:1
- +19 KILL Y
- +20 SET Y=VETDTE
- +21 XECUTE ^DD("DD")
- +22 WRITE !,"Last Veteran requested Appointment: ",?36,Y
- End DoDot:1
- +23 KILL Y
- +24 SET Y=CURRAPT
- +25 XECUTE ^DD("DD")
- +26 WRITE !,"Current Appt: ",?36,Y
- +27 KILL Y
- +28 QUIT