| [613] | 1 | IBDF1B ;ALB/CJM - ENCOUNTER FORM (printing forms for appointments); 3/1/93
 | 
|---|
 | 2 |  ;;3.0;AUTOMATED INFO COLLECTION SYS;**29**;APR 24, 1997
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 |  ;IBSRT=1 for sort by clinic/patient name
 | 
|---|
 | 5 |  ;IBSRT=2 for sort by terminal digits
 | 
|---|
 | 6 |  ;IBSRT=3 for sort by clinic/terminal digits
 | 
|---|
 | 7 |  ;
 | 
|---|
 | 8 |  ;SELECTBY="P" if user wants to select appts by patient
 | 
|---|
 | 9 |  ;SELECTBY="C" if user wants to select appts by division/clinic
 | 
|---|
 | 10 |  ;
 | 
|---|
 | 11 |  ;IBDT=date for appointments
 | 
|---|
 | 12 |  ;IBREPRNT'="" if this is a reprint of a previous job - then it's either equal to clinic name or 1st 4 terminal digits
 | 
|---|
 | 13 |  ;IBSTRTDV is the division to start from in the case of a reprint
 | 
|---|
 | 14 |  ;IBADDONS=1 if user wants to do add-ons only, 0 otherwise
 | 
|---|
 | 15 |  ;
 | 
|---|
 | 16 | EN ;
 | 
|---|
 | 17 |  N IBREPRNT,SELECTBY,IBDT,IBSRT,IBADDONS,IBSTRTDV,QUIT,X
 | 
|---|
 | 18 |  S (IBSTRTDV,IBREPRNT)="",(QUIT,IBADDONS)=0
 | 
|---|
 | 19 |  ;
 | 
|---|
 | 20 |  ;set the error trap so workspace in ^TMP is erased in case of abnormal termination of the print job
 | 
|---|
 | 21 |  S X="ERRORTRP^IBDF1B",@^%ZOSF("TRAP")
 | 
|---|
 | 22 |  ;
 | 
|---|
 | 23 |  K ^TMP("IBDF",$J),^TMP("IB",$J)
 | 
|---|
 | 24 |  D HOME^%ZIS
 | 
|---|
 | 25 |  D
 | 
|---|
 | 26 |  .D SELECTBY Q:QUIT  S:SELECTBY="P" IBSRT=1 ;if selecting by patient then sort by clinic/patient rather than by terminal digits
 | 
|---|
 | 27 |  .D:SELECTBY="C" SORTBY^IBDF1BA Q:QUIT
 | 
|---|
 | 28 |  .D APPTDATE Q:QUIT
 | 
|---|
 | 29 |  .;now allow user to makes selections, whether by patient or clinic
 | 
|---|
 | 30 |  .D @SELECTBY
 | 
|---|
 | 31 |  .;
 | 
|---|
 | 32 |  .;if nothing selected exit
 | 
|---|
 | 33 |  .Q:'$D(^TMP("IBDF",$J))
 | 
|---|
 | 34 |  .;
 | 
|---|
 | 35 |  .;since selecting by entire clinics, may want to do add-ons only or restart the job
 | 
|---|
 | 36 |  .I SELECTBY="C" D  Q:QUIT
 | 
|---|
 | 37 |  ..D ADDONS Q:QUIT
 | 
|---|
 | 38 |  ..D REPRINT Q:QUIT
 | 
|---|
 | 39 |  ;
 | 
|---|
 | 40 |  ;
 | 
|---|
 | 41 |  ;if nothing selected exit
 | 
|---|
 | 42 | END G:('$D(^TMP("IBDF",$J)))!QUIT EXIT
 | 
|---|
 | 43 |  W !,$C(7),"** Encounter Forms require a page size of 80 lines and 132 columns. **"
 | 
|---|
 | 44 |  K %IS,%ZIS,IOP S %ZIS="QM",%ZIS("A")="OUTPUT DEVICE: " D ^%ZIS G:POP EXIT
 | 
|---|
 | 45 |  I $D(IO("Q")) S ZTRTN="^IBDF1B1",ZTDESC="IBDF Encounter Forms",ZTSAVE("^TMP(""IBDF"",$J,")="",ZTSAVE("IB*")="" D ^%ZTLOAD K IO("Q") W !,$S($D(ZTSK):"Request Queued Task="_ZTSK,1:"Request Canceled") D HOME^%ZIS G EXIT
 | 
|---|
 | 46 |  U IO
 | 
|---|
 | 47 |  D ^IBDF1B1
 | 
|---|
 | 48 | EXIT ;
 | 
|---|
 | 49 |  K ^TMP("IBDF",$J),^TMP("IB",$J),^TMP("RPT",$J),^TMP("DFN",$J)
 | 
|---|
 | 50 |  I $D(ZTQUEUED) S ZTREQ="@" Q
 | 
|---|
 | 51 |  K DTOUT,DUOUT,DIRUT,DIROUT,X,Y,D0,DA,IBTYPE
 | 
|---|
 | 52 |  D ^%ZISC
 | 
|---|
 | 53 |  Q
 | 
|---|
 | 54 |  ;
 | 
|---|
 | 55 | REPRINT ;for prior job that partially completed?
 | 
|---|
 | 56 |  ;IBSTRTDV is the division to restart from
 | 
|---|
 | 57 |  ;IBREPRNT is the clinic or first 4 of terminal digits to restart from
 | 
|---|
 | 58 |  S DIR(0)="Y",DIR("A")="IS THIS A REPRINT OF A PREVIOUS RUN"
 | 
|---|
 | 59 |  S DIR("B")="NO",DIR("?")="ANSWER YES IF SOME OF THE FORMS WERE ALREADY PRINTED BY A PREVIOUS JOB THAT DID NOT SUCCESSFULLY COMPLETE"
 | 
|---|
 | 60 |  D ^DIR K DIR I $D(DIRUT)!(Y=-1) S QUIT=1 Q
 | 
|---|
 | 61 |  I Y D  I IBREPRNT="" S QUIT=1 Q
 | 
|---|
 | 62 |  .I IBSRT=2 D  ;sorting by division/terminal digit
 | 
|---|
 | 63 |  ..;ask which division to restart from
 | 
|---|
 | 64 |  ..S IBSTRTDV=$$STARTDIV^IBDF1BA I IBSTRTDV="" S IBREPRNT="" Q
 | 
|---|
 | 65 |  ..;ask which terminal digit to restart from
 | 
|---|
 | 66 |  ..D TERMSTRT^IBDF1BA Q:IBREPRNT=""
 | 
|---|
 | 67 |  .I (IBSRT=1)!(IBSRT=3) D CLNCSTRT^IBDF1BA ;sorting by division/clinic, ask which clinic to restart from
 | 
|---|
 | 68 |  Q
 | 
|---|
 | 69 | ADDONS ;add-ons only?
 | 
|---|
 | 70 |  S DIR(0)="Y",DIR("A")="WANT TO PRINT ADD-ONS ONLY"
 | 
|---|
 | 71 |  S DIR("B")="NO",DIR("?")="ANSWER YES TO ONLY PRINT ADD-ONS"
 | 
|---|
 | 72 |  D ^DIR K DIR I $D(DIRUT)!(Y=-1) S QUIT=1 Q
 | 
|---|
 | 73 |  S IBADDONS=Y
 | 
|---|
 | 74 |  Q
 | 
|---|
 | 75 | SELECTBY ;select by patient or clinic?
 | 
|---|
 | 76 |  W !,"Do you want to print forms for a particular patient or for entire clinics?",!
 | 
|---|
 | 77 |  K DIR S DIR("B")="Clinic",DIR(0)="SO^P:Patient;C:Clinic",DIR("A")="Select Appointment by"
 | 
|---|
 | 78 |  D ^DIR K DIR I $D(DIRUT) S QUIT=1 Q
 | 
|---|
 | 79 |  S SELECTBY=Y
 | 
|---|
 | 80 |  Q
 | 
|---|
 | 81 |  ;
 | 
|---|
 | 82 | P ;print by patient - get patient then appointment(s) for date
 | 
|---|
 | 83 |  N IBTMP,IBNM,DFN
 | 
|---|
 | 84 |  ;IBNM=patient name, IBTMP=array to store patient's appts
 | 
|---|
 | 85 |  F  K DIC S DIC="^DPT(",DIC(0)="AEQM" D ^DIC K DIC Q:Y<0  S DFN=+Y,IBNM=$P(Y,"^",2) D SEARCH^IBDF1BA,DISP^IBDF1BA
 | 
|---|
 | 86 |  Q
 | 
|---|
 | 87 |  ;
 | 
|---|
 | 88 | C ;print all appointments for a clinic - find division then clinic, print all/some clinics for all/some divisions
 | 
|---|
 | 89 |  ;
 | 
|---|
 | 90 |  N GROUPS,IEN
 | 
|---|
 | 91 |  ;
 | 
|---|
 | 92 |  ;get the PRINT MANAGER CLINIC GROUPS
 | 
|---|
 | 93 |  S GROUPS=""
 | 
|---|
 | 94 |  K DIR
 | 
|---|
 | 95 |  S DIR(0)="PAO^357.99:AEMQ",DIR("A")="Select Print Manager Clinic Group:",DIR("?")="You can choose from previously defined clinic groups."
 | 
|---|
 | 96 |  F  D ^DIR Q:((+Y<0)!$D(DIRUT))  S GROUPS(+Y)="",DIR("A")="Select another Print Manager Clinic Group:"
 | 
|---|
 | 97 |  S GROUPS=0 F  S GROUPS=$O(GROUPS(GROUPS)) Q:'GROUPS  D
 | 
|---|
 | 98 |  .S IEN=0 F  S IEN=$O(^IBD(357.99,GROUPS,10,IEN)) Q:'IEN  S IBCLN=+$G(^IBD(357.99,GROUPS,10,IEN,0)) S:IBCLN ^TMP("IBDF",$J,"C",IBCLN)=""
 | 
|---|
 | 99 |  .S IEN=0 F  S IEN=$O(^IBD(357.99,GROUPS,11,IEN)) Q:'IEN  S IBDIV=+$G(^IBD(357.99,GROUPS,11,IEN,0)) S:IBDIV ^TMP("IBDF",$J,"D",IBDIV)=""
 | 
|---|
 | 100 |  K DIR
 | 
|---|
 | 101 |  G:$O(GROUPS(0)) ENDC
 | 
|---|
 | 102 |  ;
 | 
|---|
 | 103 |  ;now ask divisions and clinics
 | 
|---|
 | 104 |  W !!,"Now you can select individual divisions and clinics."
 | 
|---|
 | 105 |  ;D ASK2^IBODIV G:$D(VAUTD)<11&(VAUTD=0) ENDC
 | 
|---|
 | 106 |  S VAUTD=1 I $P($G(^DG(43,1,"GL")),"^",2) D DIVISION^VAUTOMA I Y=-1 G ENDC
 | 
|---|
 | 107 |  S DIC("S")="I $P(^SC(+Y,0),U,3)=""C"",$S(VAUTD:1,$D(VAUTD(+$P(^(0),U,15))):1,'+$P(^(0),U,15)&$D(VAUTD($O(^DG(40.8,0)))):1,1:0)"
 | 
|---|
 | 108 |  W !!,"If you want to print forms for all clinics in the divisions you have",!,"chosen (for those clinics with forms defined) then select ALL."
 | 
|---|
 | 109 |  W !!,"Otherwise, select the particular clinics you want.",!
 | 
|---|
 | 110 |  S DIC="^SC(",VAUTVB="VAUTC",VAUTNI=2,VAUTSTR="clinic" D FIRST^VAUTOMA K DIC G:$D(VAUTC)<11&(VAUTC=0) ENDC
 | 
|---|
 | 111 |  I VAUTC,VAUTD S ^TMP("IBDF",$J,"D","ALL")=""
 | 
|---|
 | 112 |  I VAUTC,'VAUTD S IBDIV="" F  S IBDIV=$O(VAUTD(IBDIV)) Q:IBDIV=""  S ^TMP("IBDF",$J,"D",IBDIV)=""
 | 
|---|
 | 113 |  I 'VAUTC S IBCLN="" F  S IBCLN=$O(VAUTC(IBCLN)) Q:IBCLN=""  S ^TMP("IBDF",$J,"C",IBCLN)=""
 | 
|---|
 | 114 | ENDC K VAUTNI,VAUTD,VAUTC,VAUTVB,VAUTSTR,IBDIV,IBCLN,DIC
 | 
|---|
 | 115 |  Q
 | 
|---|
 | 116 |  ;
 | 
|---|
 | 117 | APPTDATE ;print forms for appointments on what date?
 | 
|---|
 | 118 |  K DIR S DIR(0)="D^::AEX",DIR("B")="TODAY",DIR("A")="Appointment Date to Print Forms For"
 | 
|---|
 | 119 |  S DIR("?",1)="Only Clinics and Patients with Appointments on this Date will be allowed."
 | 
|---|
 | 120 |  S DIR("?")="Nothing will print for Appointments in Clinics/Divisions with no forms defined."
 | 
|---|
 | 121 |  D ^DIR K DIR I $D(DIRUT) S QUIT=1 Q
 | 
|---|
 | 122 |  S IBDT=Y
 | 
|---|
 | 123 |  Q
 | 
|---|
 | 124 |  ;
 | 
|---|
 | 125 | ERRORTRP ;the error trap
 | 
|---|
 | 126 |  K ^TMP("IBDF",$J),^TMP("IB",$J)
 | 
|---|
 | 127 |  D @^%ZOSF("ERRTN")
 | 
|---|
 | 128 |  Q
 | 
|---|