| [613] | 1 | IBDFDE7 ;ALB/AAS - AICS Manual Data Entry, Entry point for Group Clinics ; 29-APR-96
 | 
|---|
 | 2 |  ;;3.0;AUTOMATED INFO COLLECTION SYS;**36,51**;APR 24, 1997
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 |  W !,?4,"** This option is OUT OF ORDER **" QUIT   ;Code set Versioning
 | 
|---|
 | 5 |  ;
 | 
|---|
 | 6 | % N %,%H,C,I,J,X,Y,ADD,DEL,ASKOTHER,DIR,DIC,DA,CNT,DFN,DIRUT,DUOUT,DTOUT,POP,RTN,FRMDATA,IBDA,IBY,IBQUIT,IBDF,IBDOBJ,IBDPTSTI,IBDPTSTE,IBDPTNM,IBDPTDTI,SEL,IBD,IBDCKOUT
 | 
|---|
 | 7 |  N IBDPTDTE,IBDFMNME,IBDFMIEN,IBDFMSTI,IBDFMSTE,IBDFMIDI,IBDCLNME,IBFORM,IBDCLNPH,IBDPID,IBDPTPRI,IBDSEL,IBDPI,IBDCO,PXCA,SDCLST,PXCASTAT,PXKNODA,PXKNODB,IBDREDIT,IBDASK,IBDPRE,IBDX,ANS,CLNAME,CLSETUP,IBDSC,FORM,FORMLST,IBDFDT
 | 
|---|
 | 8 |  ;
 | 
|---|
 | 9 |  I '$D(DT) D DT^DICRW
 | 
|---|
 | 10 |  D HOME^%ZIS
 | 
|---|
 | 11 |  W !!,"Data Entry of Encounter Forms for Group Clinics",!
 | 
|---|
 | 12 |  ;
 | 
|---|
 | 13 | STRT ; -- ask for Clinic, appt. date/time
 | 
|---|
 | 14 |  ;    list patients, allow to deselect
 | 
|---|
 | 15 |  ;    find all forms for appt., then go through 1 at a time
 | 
|---|
 | 16 |  ;    then send data for each patient
 | 
|---|
 | 17 |  ;
 | 
|---|
 | 18 |  D END W !
 | 
|---|
 | 19 |  S IBQUIT=0
 | 
|---|
 | 20 |  S (IBDSC,IBDF("CLINIC"))=$$SELCL^IBDFDE6 G:IBQUIT STRTQ
 | 
|---|
 | 21 |  I IBDSC<1 S IBQUIT=1 G STRTQ
 | 
|---|
 | 22 |  S CLNAME=$P($G(^SC(+IBDSC,0)),"^")
 | 
|---|
 | 23 |  S CLSETUP=$G(^SD(409.95,+$O(^SD(409.95,"B",+IBDSC,0)),0))
 | 
|---|
 | 24 |  ;
 | 
|---|
 | 25 | OVER ;
 | 
|---|
 | 26 |  W !
 | 
|---|
 | 27 |  S IBQUIT=0
 | 
|---|
 | 28 |  S IBDFDT=$$SELAPT(.IBDF) G:IBQUIT STRTQ
 | 
|---|
 | 29 |  I IBDFDT<0 G STRT
 | 
|---|
 | 30 |  S IBDF("APPT")=IBDFDT
 | 
|---|
 | 31 |  ;
 | 
|---|
 | 32 |  D BLD
 | 
|---|
 | 33 |  I '$D(^TMP("IBD-PL",$J,IBDF("CLINIC"))) W !!,"No valid appointments at that Date/Time!",!! G STRTQ
 | 
|---|
 | 34 |  ;
 | 
|---|
 | 35 |  D HDR^IBDFDE6,LIST^IBDFDE6
 | 
|---|
 | 36 |  W !!
 | 
|---|
 | 37 |  D EXCLUD
 | 
|---|
 | 38 |  I IBQUIT=2 S IBQUIT=0 G STRTQ
 | 
|---|
 | 39 |  G:IBQUIT STRTQ
 | 
|---|
 | 40 |  ;
 | 
|---|
 | 41 |  ; -- get first patient, check form(s)
 | 
|---|
 | 42 |  ;   do data entry on form and if okay pass data for all patients
 | 
|---|
 | 43 |  S IBDSTRT=+$O(^TMP("IBD-PL",$J,IBDF("CLINIC"),0))
 | 
|---|
 | 44 |  S NODE=$G(^TMP("IBD-PL",$J,IBDF("CLINIC"),IBDSTRT))
 | 
|---|
 | 45 |  S (DFN,IBDFN)=+NODE
 | 
|---|
 | 46 |  S FORMLST=$$FINDID^IBDF18C(DFN,IBDF("APPT"),"",1)
 | 
|---|
 | 47 |  I FORMLST="" W !,"No forms Printed for first Patient" D ANYWAY^IBDFDE6
 | 
|---|
 | 48 |  I FORMLST="" G OVERQ
 | 
|---|
 | 49 |  S IBDF("SAVE")=1 ;save ibdsel(array)
 | 
|---|
 | 50 |  F IBDX=1:1 S IBDF("FORM")=$P(FORMLST,"^",IBDX) Q:IBDF("FORM")=""  I IBDF("FORM")'="" D EN^IBDFDE D
 | 
|---|
 | 51 |  .I $G(IBDF("NOTHING"))!(IBQUIT) W !! Q
 | 
|---|
 | 52 |  .D ALLPTS K IBDSEL,IBDPI Q:IBQUIT
 | 
|---|
 | 53 |  K IBDF("SAVE")
 | 
|---|
 | 54 |  ;
 | 
|---|
 | 55 | OVERQ G OVER
 | 
|---|
 | 56 |  ;
 | 
|---|
 | 57 | STRTQ D PAUSE^IBDFDE G:IBQUIT END
 | 
|---|
 | 58 |  G STRT
 | 
|---|
 | 59 |  ;
 | 
|---|
 | 60 | ALLPTS ; -- loop through all patients, merge ibdf=^tmp("ibd-save),
 | 
|---|
 | 61 |  ;    reset dfn, pass data to ibdfrpc4
 | 
|---|
 | 62 |  N PARAM,FORMID,IBX,NODE
 | 
|---|
 | 63 |  S FORMID=$P(^IBD(357.96,+IBDF("FORM"),0),"^",4)
 | 
|---|
 | 64 |  S PARAM=$P($G(^IBD(357.09,1,0)),"^",7)
 | 
|---|
 | 65 |  I $G(^TMP("IBD-SAVED",$J,"DYNAMIC")) W !!,"Form contains patient specific information, Not available for this option!",!! G ALLPTQ
 | 
|---|
 | 66 |  S IBDA=IBDSTRT
 | 
|---|
 | 67 |  F  S IBDA=$O(^TMP("IBD-PL",$J,IBDF("CLINIC"),IBDA)) Q:IBDA=""!(IBQUIT)  D
 | 
|---|
 | 68 |  .S IBX=IBDA
 | 
|---|
 | 69 |  .S NODE=$G(^TMP("IBD-PL",$J,IBDF("CLINIC"),IBX))
 | 
|---|
 | 70 |  .M IBDF=^TMP("IBD-SAVED",$J)
 | 
|---|
 | 71 |  .S (DFN,IBDF("DFN"))=+NODE
 | 
|---|
 | 72 |  .S IBDF("SDOE")=$P(NODE,"^",22)
 | 
|---|
 | 73 |  .S IBDF("FORM")=+$$FID^IBDF18C(DFN,IBDF("APPT"),1,FORMID,IBDF("CLINIC"))
 | 
|---|
 | 74 |  .W !!,"Check out interview for: ",$P($G(^DPT(DFN,0)),"^")
 | 
|---|
 | 75 |  .K IBDCO,IBDF("AO"),IBDF("SC"),IBDF("IR"),IBDF("EC"),IBDF("MST")
 | 
|---|
 | 76 |  .D CHKOUT^IBDFDE0(IBDF("SDOE"))
 | 
|---|
 | 77 |  .M IBDF=IBDCO
 | 
|---|
 | 78 |  .D SEND^IBDFRPC4(.RESULT,.IBDF)
 | 
|---|
 | 79 |  .I PARAM=3 D DISP^IBDFDE1
 | 
|---|
 | 80 |  .I PARAM,$D(PXCA("ERROR"))!($D(PXCA("WARNING"))) D ERR^IBDFDE1
 | 
|---|
 | 81 |  .I $P($G(^IBD(357.09,1,0)),"^",6) D MAKAPPT^IBDFDE1
 | 
|---|
 | 82 |  ;
 | 
|---|
 | 83 |  K ^TMP("IBD-SAVED",$J)
 | 
|---|
 | 84 | ALLPTQ Q
 | 
|---|
 | 85 |  ;
 | 
|---|
 | 86 | SELAPT(IBDF) ; -- select appointment date/time for a clinic
 | 
|---|
 | 87 |  N DIR,DA,DR,DIC,DIE,X,Y,ANS,DIRUT
 | 
|---|
 | 88 |  S ANS=-1
 | 
|---|
 | 89 |  S DIR(0)="DO^:NOW:AEXRT^D SCRN^IBDFDE7",DIR("A")="Appointment Date/Time"
 | 
|---|
 | 90 |  S DIR("?")="Enter the date/time for the clinic that you wish to enter encounter forms for.  Appointments must be present to enter the date time."
 | 
|---|
 | 91 |  S DIR("??")="^D APDT^IBDFDE7"
 | 
|---|
 | 92 |  D ^DIR K DIR
 | 
|---|
 | 93 |  I $D(DIRUT) G SELAPQ
 | 
|---|
 | 94 |  S ANS=+Y
 | 
|---|
 | 95 | SELAPQ Q ANS
 | 
|---|
 | 96 |  ;
 | 
|---|
 | 97 | SCRN ; -- input transform logic for selecting an appointment date/time
 | 
|---|
 | 98 |  I $G(IBDF("CLINIC"))="" K X
 | 
|---|
 | 99 |  I '$D(^SC(IBDF("CLINIC"),"S",Y,1)) W $C(7),"??  No appointments that time." K X
 | 
|---|
 | 100 |  Q
 | 
|---|
 | 101 |  ;
 | 
|---|
 | 102 | EXCLUD ; -- select patient(s) to process
 | 
|---|
 | 103 |  S RESULT=""
 | 
|---|
 | 104 |  S DIR("?")="Enter the number of the patient to exclude."
 | 
|---|
 | 105 |  S DIR("??")="^D LIST^IBDFDE6"
 | 
|---|
 | 106 |  S DIR(0)="FO^1:30",DIR("A")="Exclude Patient"
 | 
|---|
 | 107 |  I RESULT'="" S DIR("A")="Exclude Another Patient"
 | 
|---|
 | 108 |  D ^DIR K DIR
 | 
|---|
 | 109 |  I $D(DTOUT)!($D(DUOUT)) S IBQUIT=1 G EXCLUDQ
 | 
|---|
 | 110 |  S ANS=Y
 | 
|---|
 | 111 |  I ANS="" G EXCLUDQ
 | 
|---|
 | 112 |  I ANS'=+ANS W !,"You must select a number from the list."
 | 
|---|
 | 113 |  I ANS=+ANS,$D(^TMP("IBD-PL",$J,IBDF("CLINIC"),ANS)) D
 | 
|---|
 | 114 |  .S RESULT=^TMP("IBD-PL",$J,IBDF("CLINIC"),ANS)
 | 
|---|
 | 115 |  .K ^TMP("IBD-PL",$J,IBDF("CLINIC"),ANS),^TMP("IBD-PLN",$J,IBDF("CLINIC"),$P($G(^DPT(+RESULT,0)),"^"))
 | 
|---|
 | 116 |  .W "  ",$P($G(^DPT(+RESULT,0)),"^"),"   ","Excluded!"
 | 
|---|
 | 117 |  ;
 | 
|---|
 | 118 |  I '$D(^TMP("IBD-PL",$J,IBDF("CLINIC"))) W !!,"No patients left" S IBQUIT=2 G EXCLUDQ
 | 
|---|
 | 119 |  ;
 | 
|---|
 | 120 |  G EXCLUD
 | 
|---|
 | 121 | EXCLUDQ Q
 | 
|---|
 | 122 |  ;
 | 
|---|
 | 123 | BLD ; -- Find all appointments for a date
 | 
|---|
 | 124 |  K ^TMP("IBD-PL",$J),^TMP("IBD-PLN",$J)
 | 
|---|
 | 125 |  N SC,IBD,IBD1
 | 
|---|
 | 126 |  S IBD=IBDFDT,SC=IBDF("CLINIC"),CNT=0
 | 
|---|
 | 127 |  S IBD1=0 F  S IBD1=$O(^SC(SC,"S",IBD,1,IBD1)) Q:'IBD1  D
 | 
|---|
 | 128 |  .S NODE=$G(^SC(SC,"S",IBD,1,IBD1,0))
 | 
|---|
 | 129 |  .S SNODE=$G(^DPT(+NODE,"S",IBD,0))
 | 
|---|
 | 130 |  .S X=$P(SNODE,"^",2)
 | 
|---|
 | 131 |  .I X'="","CNAPCA"[X Q  ;inpatient appointments are okay
 | 
|---|
 | 132 |  .S (DFN,IBDF("DFN"))=+NODE
 | 
|---|
 | 133 |  .S CNT=CNT+1
 | 
|---|
 | 134 |  .S ^TMP("IBD-PL",$J,SC,CNT)=DFN_"^"_IBD_"^"_SNODE
 | 
|---|
 | 135 |  .S ^TMP("IBD-PLN",$J,SC,$P(^DPT(DFN,0),"^"))=DFN_"^"_IBD_"^"_SNODE
 | 
|---|
 | 136 |  Q
 | 
|---|
 | 137 |  ;
 | 
|---|
 | 138 | LIST ; -- print list of patients
 | 
|---|
 | 139 |  N IBD,IBJ,FORM,STATUS
 | 
|---|
 | 140 |  S IBD=0 F  S IBD=$O(^TMP("IBD-PL",$J,IBDF("CLINIC"),IBD)) Q:'IBD  D
 | 
|---|
 | 141 |  .S DFN=+$G(^TMP("IBD-PL",$J,IBDF("CLINIC"),IBD)),APPT=$P($G(^(IBD)),"^",2),SNODE=$P($G(^(IBD)),"^",3,99)
 | 
|---|
 | 142 |  .S FORM=+$$FINDID^IBDF18C(DFN,APPT,"",1),STATUS="NO FORM PRINTED"
 | 
|---|
 | 143 |  .I FORM S Y=$P($G(^IBD(357.96,+FORM,0)),"^",11),C=$P(^DD(357.96,.11,0),"^",2) D Y^DIQ S STATUS=Y
 | 
|---|
 | 144 |  .W !?2,IBD,?5,$E($P(^DPT(DFN,0),"^"),1,20),?29,$P($G(^DPT(DFN,.36)),"^",3),?43,$$FMTE^XLFDT(+APPT),?64,$E($G(STATUS),1,16)
 | 
|---|
 | 145 |  Q
 | 
|---|
 | 146 |  ;
 | 
|---|
 | 147 | APDT ; -- list last 30 days appointment dates in clinic
 | 
|---|
 | 148 |  S (X,Y)=$$FMADD^XLFDT(DT,-60),CNT=0
 | 
|---|
 | 149 |  F  S X=$O(^SC(IBDF("CLINIC"),"S",X)) Q:'X!(X>DT)  D
 | 
|---|
 | 150 |  .S Y=X,CNT=CNT+1
 | 
|---|
 | 151 |  .I CNT=1 W !!,"The following are valid Appointment date/times in the past 60 days:"
 | 
|---|
 | 152 |  .W:(CNT#3=1) !,?3,$$FMTE^XLFDT(Y)
 | 
|---|
 | 153 |  .W:(CNT#3=2) ?30,$$FMTE^XLFDT(Y)
 | 
|---|
 | 154 |  .W:(CNT#3=0) ?60,$$FMTE^XLFDT(Y)
 | 
|---|
 | 155 |  Q
 | 
|---|
 | 156 |  ;
 | 
|---|
 | 157 | HDR ; -- print Clinic header
 | 
|---|
 | 158 |  W @IOF
 | 
|---|
 | 159 |  W !,"      Clinic: ",$E(CLNAME,1,25) W ?40,"       Date: ",$$FMTE^XLFDT(IBDFDT)
 | 
|---|
 | 160 |  S FORM=$P(CLSETUP,"^",2),IBDFMNME=$P($G(^IBE(357,+FORM,0)),"^")
 | 
|---|
 | 161 |  W !,"  Basic Form: ",$E(IBDFMNME,1,25) ;W ?40,"Form Status: ",$E(IBDFMSTE,1,25)
 | 
|---|
 | 162 |  W !,$TR($J(" ",IOM)," ","=")
 | 
|---|
 | 163 |  Q
 | 
|---|
 | 164 |  ;
 | 
|---|
 | 165 | END K I,J,X,Y,DA,DR,DIC,DIE,DIR,DTOUT,DUOUT,DIRUT,IBDSEL,CHOICE,TEXT,TEXTU,RESULT,IBDPI,IBDCO,IBDF,IBDA,SDFN
 | 
|---|
 | 166 |  K ^TMP("IBD-PL",$J),^TMP("IBD-PLN",$J),^TMP("IBD-SAVED",$J),^TMP("IBD-MORE",$J),^TMP("IBD-PLCHK",$J),^TMP("IBD-PL4",$J),^TMP("IBD-PLB",$J)
 | 
|---|
 | 167 |  K ^TMP("IBD-ASK",$J),^TMP("IBD-LCODE",$J),^TMP("IBD-LST",$J),^TMP("IBD-LTEXT",$J),^TMP("IBD-OBJ",$J)
 | 
|---|
 | 168 |  Q
 | 
|---|