| 1 | IBDFDE1 ;ALB/AAS - AICS Data Entry, Final check; 24-FEB-96 [ 11/12/96  2:12 PM ] | 
|---|
| 2 | ;;3.0;AUTOMATED INFO COLLECTION SYS;**38,36**;APR 24, 1997 | 
|---|
| 3 | ; -- calls IBDFRPC4 to pass data to pce | 
|---|
| 4 | ; | 
|---|
| 5 | % G ^IBDFDE | 
|---|
| 6 | ; | 
|---|
| 7 | FINAL ; -- display everything selected and check okay | 
|---|
| 8 | ; -- input IBDSEL : | 
|---|
| 9 | ;             $p1 := package interface ien (for input) | 
|---|
| 10 | ;             $p2 := code to send (may be internal or external) | 
|---|
| 11 | ;             $p3 := text to send | 
|---|
| 12 | ;             $p4 := hdr to send (optional) | 
|---|
| 13 | ;             $p5 := clinic lexicon pointer (optional) | 
|---|
| 14 | ;             $p6 := qualifier (i.e. primary or secondary) | 
|---|
| 15 | ;             $P7 := | 
|---|
| 16 | ;             $p8 := | 
|---|
| 17 | ;             $p9 := | 
|---|
| 18 | ;             $p10 := external value of code (optional) | 
|---|
| 19 | ; | 
|---|
| 20 | N I,X,DIR,DIRUT,DUOUT,DTOUT,PARAM,IBDCNT,MODSAVE,XX | 
|---|
| 21 | K IBDREDIT | 
|---|
| 22 | I $G(IBDSEL(0))<1,$G(IBDCO("CO"))="",$G(IBDCO("SC"))="",$G(IBDCO("AO"))="",$G(IBDCO("IR"))="",$G(IBDCO("EC"))="",$G(IBDCO("MST"))="" W !!,"Nothing Selected!!" S IBDF("NOTHING")=1 Q | 
|---|
| 23 | ; | 
|---|
| 24 | S (IBDCNT,IBQUIT)=0 | 
|---|
| 25 | W !!,"You have entered the following:" | 
|---|
| 26 | D WRITE^IBDFDE0(IBDF("SDOE"),.IBDCNT) | 
|---|
| 27 | S I=0 F  S I=$O(IBDSEL(I)) Q:I=""  D | 
|---|
| 28 | . S IBDCNT=IBDCNT+1 | 
|---|
| 29 | . K MODSAVE | 
|---|
| 30 | . D LINE(IBDCNT,IBDSEL(I)) D | 
|---|
| 31 | .. I $D(IBDSEL(I,"MODIFIER")) D MODLIST(I) | 
|---|
| 32 | S DIR(0)="Y",DIR("B")="No",DIR("A")="Is this Okay" D ^DIR | 
|---|
| 33 | I $D(DIRUT) S IBQUIT=1 W !!,"No action Taken",! G FINALQ | 
|---|
| 34 | I Y<1 D DEL S:'IBQUIT IBDREDIT=1 G FINALQ | 
|---|
| 35 | I Y'=1 G FINALQ | 
|---|
| 36 | M IBDF=IBDSEL | 
|---|
| 37 | ;I $G(^DPT(DFN,"S",IBDF("APPT"),0))="" D FNDAPPT I 'IBDOK W !!,"No action Taken",! Q | 
|---|
| 38 | I $G(IBDF("SAVE")) M ^TMP("IBD-SAVED",$J)=IBDF ;don't save checkout data | 
|---|
| 39 | M IBDF=IBDCO | 
|---|
| 40 | W !!,"Sending Data to PCE..." | 
|---|
| 41 | D SEND^IBDFRPC4(.RESULT,.IBDF) | 
|---|
| 42 | W $S($G(RESULT(0)):" Successful",1:" Unsuccessful"),!! | 
|---|
| 43 | I $D(IBDSTRT) S IBDFIN=$H S IBDTIME=$$HDIFF^XLFDT(IBDFIN,IBDSTRT,2) | 
|---|
| 44 | S PARAM=$P($G(^IBD(357.09,1,0)),"^",7) | 
|---|
| 45 | I PARAM=3 D DISP | 
|---|
| 46 | I PARAM,$D(PXCA("ERROR"))!($D(PXCA("WARNING"))) D ERR | 
|---|
| 47 | I $G(IBDTIME) D | 
|---|
| 48 | .W !!,"Elapsed time for data entry: ",IBDTIME," seconds.",!! | 
|---|
| 49 | .S IBDF("SECONDS")=IBDTIME,IBDF("USER")=DUZ | 
|---|
| 50 | .D ETIME^IBDFBK1(.RESULT,.IBDF) | 
|---|
| 51 | I '$G(IBDREDIT),$P($G(^IBD(357.09,1,0)),"^",6) D MAKAPPT | 
|---|
| 52 | FINALQ K SDFN,ZTSK,SECONDS,LEX,ORVP,SEL1,PXCAVSIT,PXCA,PXCASTAT | 
|---|
| 53 | Q | 
|---|
| 54 | ; | 
|---|
| 55 | DEL ; -- delete selected entry | 
|---|
| 56 | N I,J,DIR,DIRUT,DUOUT,DTOUT,CNT,CNTD,IBD,IBD1,IBDEL | 
|---|
| 57 | S CNT=0 | 
|---|
| 58 | W ! | 
|---|
| 59 | S DIR(0)="Y",DIR("B")="No",DIR("A")="Do you want to delete an item" | 
|---|
| 60 | S DIR("?")="Enter 'Yes' if you want to delete an item or 'No' to just add more items." | 
|---|
| 61 | D ^DIR K DIR | 
|---|
| 62 | I $D(DIRUT) S IBQUIT=1 Q | 
|---|
| 63 | Q:Y<1 | 
|---|
| 64 | S IBD=0 F  S IBD=$O(IBDSEL(IBD)) Q:IBD=""  S CNT=CNT+1,IBDEL(CNT)=IBD D LINE(CNT,IBDSEL(IBD)) D | 
|---|
| 65 | . I $D(IBDSEL(IBD,"MODIFIER")) D MODLIST(IBD) | 
|---|
| 66 | Q:CNT<1 | 
|---|
| 67 | S DIR(0)="L^1:"_CNT D ^DIR K DIR | 
|---|
| 68 | I $D(DIRUT) W !,"Nothing Deleted" Q | 
|---|
| 69 | F IBD1=1:1 S IBDEL=$P(Y,",",IBD1) Q:IBDEL=""  D | 
|---|
| 70 | .W !,"Deleting "_IBDEL | 
|---|
| 71 | .S QLFR=$P(IBDSEL(IBDEL(IBDEL)),"^",6) | 
|---|
| 72 | .I QLFR'="" K IBDPI(+IBDSEL(IBDEL(IBDEL)),QLFR) | 
|---|
| 73 | .K IBDPI(+IBDSEL(IBDEL(IBDEL)),IBDEL(IBDEL)) | 
|---|
| 74 | .K IBDSEL(IBDEL(IBDEL)) | 
|---|
| 75 | .K IBDEL(IBDEL) | 
|---|
| 76 | .S CNTD=$G(CNTD)+1 | 
|---|
| 77 | I $G(CNTD)=CNT S IBDSEL(0)=0 | 
|---|
| 78 | W ! | 
|---|
| 79 | DELQ Q | 
|---|
| 80 | ; | 
|---|
| 81 | LINE(CNT,IBD) ; -- write one line of text | 
|---|
| 82 | W !,?3,CNT,?7,$S($P(IBD,"^",8)'="":$P(IBD,"^",8),1:$E($P($P($G(^IBE(357.6,+IBD,0)),"^"),"INPUT ",2),1,22)),?31,$E($P(IBD,"^",3),1,30) | 
|---|
| 83 | W ?62,$S($P(IBD,"^",10)'="":$P(IBD,"^",10),$P($G(^IBE(357.6,+IBD,0)),"^")="GMP INPUT CLINIC COMMON PROBLEMS":$$LEX($P(IBD,"^",2)),1:$P(IBD,"^",2)) | 
|---|
| 84 | W ?70,$E($S($P(IBD,"^",9)'="":$P(IBD,"^",9),1:$P(IBD,"^",6)),1,10) | 
|---|
| 85 | S SLCTN=$P(IBD,"^",12) I SLCTN'="" D | 
|---|
| 86 | . ;list modifiers | 
|---|
| 87 | . N CODE | 
|---|
| 88 | . Q:'$D(^IBE(357.3,SLCTN,3)) | 
|---|
| 89 | . S CODE=$P($G(^IBE(357.3,SLCTN,0)),"^") Q:CODE="" | 
|---|
| 90 | . W !?11,"Associated Modifier(s):    " | 
|---|
| 91 | . S MOD=0 F  S MOD=$O(^IBE(357.3,SLCTN,3,MOD)) Q:'MOD  D | 
|---|
| 92 | .. S MODSAVE=$P($G(^IBE(357.3,SLCTN,3,MOD,0)),"^") | 
|---|
| 93 | .. S MODSAVE(MODSAVE)="" | 
|---|
| 94 | .. S XX=$P($$MODP^ICPTMOD(CODE,MODSAVE,"E"),"^",2) | 
|---|
| 95 | .. W !,?15,MODSAVE,?20,XX | 
|---|
| 96 | Q | 
|---|
| 97 | ; | 
|---|
| 98 | MODLIST(I) ; -- list modifiers if in array | 
|---|
| 99 | ; | 
|---|
| 100 | W !?11,"Selected during Data Entry Modifier(s):    " | 
|---|
| 101 | N CODE | 
|---|
| 102 | S CODE=$P($G(IBDSEL(I)),"^",2) | 
|---|
| 103 | S MOD=0 F  S MOD=$O(IBDSEL(I,"MODIFIER",MOD)) Q:'MOD  D | 
|---|
| 104 | .; --quitting if duplicate entry | 
|---|
| 105 | . Q:$D(MODSAVE(IBDSEL(I,"MODIFIER",MOD))) | 
|---|
| 106 | . S MODSAVE=IBDSEL(I,"MODIFIER",MOD) | 
|---|
| 107 | . S XX=$P($$MODP^ICPTMOD(CODE,MODSAVE,"E"),"^",2) | 
|---|
| 108 | . W !,?15,MODSAVE,?20,XX | 
|---|
| 109 | Q | 
|---|
| 110 | LEX(VAL) ; -- get output of lexicon entry | 
|---|
| 111 | I $D(^LEX)>1 S X="LEXU" X ^%ZOSF("TEST") I $T S VAL=$$ICDONE^LEXU(VAL) S:$L(VAL)<1 VAL=799.9 Q VAL  ;clinical lexicon next version to be in ^LEX | 
|---|
| 112 | S X="GMPTU" X ^%ZOSF("TEST") I $T S VAL=$$ICDONE^GMPTU(VAL) S:$L(VAL)<1 VAL=799.9 Q VAL | 
|---|
| 113 | Q 799.9 | 
|---|
| 114 | ; | 
|---|
| 115 | MAKAPPT ; -- ask make appointment stuff | 
|---|
| 116 | N %I,%T,I,J,X,Y,DIC,DA,DIR,DIRUT,DUOUT,IBDFN,RTCLEX,SDALLE,SDATD,SDAV,SDCLN,SDDECOD,SDEC,SDEMP,SDFN,SDHX,SDLOCK,SDMADE,SDNOT,SDOEL,SDPL,SDRE,SDRT,SDSOH,SDT,SDTTM,SDY,VSITON,VSIT,XQXFLG | 
|---|
| 117 | ; | 
|---|
| 118 | I $G(IBDF("NOAPPT")) G MAKAPQ | 
|---|
| 119 | S DIR("?")="Enter 'Yes' to make another appointment for this patient or 'No' if no appointment is to be made." | 
|---|
| 120 | S DIR(0)="Y",DIR("A")="Do you wish to make a follow-up appointment for "_$P(^DPT(IBDF("DFN"),0),"^") | 
|---|
| 121 | D ^DIR K DIR | 
|---|
| 122 | I $D(DUOUT)!($D(DTOUT)) S IBQUIT=1 G MAKAPQ | 
|---|
| 123 | I Y<1 G MAKAPQ | 
|---|
| 124 | ; | 
|---|
| 125 | S (SDFN,IBDFN,DFN)=$G(IBDF("DFN")) ;use same patient, don't ask patient, ask clinic | 
|---|
| 126 | ;S SDCLN=IBDF("CLINIC") ;use same clinic, don't ask clinic | 
|---|
| 127 | D ^SDM | 
|---|
| 128 | S DFN=IBDFN K SDFN | 
|---|
| 129 | MAKAPQ Q | 
|---|
| 130 | ; | 
|---|
| 131 | ERR ; -- if processing of errors is on do display | 
|---|
| 132 | ;    ask if want to re-edit | 
|---|
| 133 | N I,J,ERR,LCNT,DIR,DIRUT,DUOUT | 
|---|
| 134 | S LCNT=0 | 
|---|
| 135 | D EW^IBDFBK2(.ERR,.PXCA,.LCNT) | 
|---|
| 136 | ; | 
|---|
| 137 | W !!!,"The following Error(s) occurred while validating data in PCE for: ",$P($G(^DPT(IBDF("DFN"),0)),"^") | 
|---|
| 138 | S I=0 F  S I=$O(ERR(I)) Q:'I  W !?4,$E(ERR(I),1,75)  I $L(ERR(I))>75 W !?10,$E(ERR(I),76,140) | 
|---|
| 139 | W ! | 
|---|
| 140 | Q:$G(IBDF("SAVE")) | 
|---|
| 141 | S DIR(0)="Y",DIR("B")="Yes",DIR("A")="Do you want to Re-Edit" | 
|---|
| 142 | D ^DIR K DIR | 
|---|
| 143 | I Y=1 D | 
|---|
| 144 | .S IBDREDIT=1 | 
|---|
| 145 | .K IBDF("CO"),IBDF("IR"),IBDF("SC"),IBDF("EC"),IBDF("AO"),IBDF("MST") | 
|---|
| 146 | .S I=0 F  S I=$O(IBDF(I)) Q:'I  K IBDF(I) | 
|---|
| 147 | I $D(DIRUT) S IBQUIT=1 | 
|---|
| 148 | Q | 
|---|
| 149 | ; | 
|---|
| 150 | DISP ; -- display data based on pxca array | 
|---|
| 151 | N I,LST,LCNT | 
|---|
| 152 | S LCNT=0 | 
|---|
| 153 | D LSTDATA^IBDFBK3(.LST,.PXCA,.LCNT) | 
|---|
| 154 | W !!!,"The following data was sent to PCE for: ",$P($G(^DPT(IBDF("DFN"),0)),"^") | 
|---|
| 155 | W !,?4,"Clinic: ",$P($G(^SC(+$P($G(PXCA("ENCOUNTER")),"^",3),0)),"^")," at ",$$FMTE^XLFDT(+$G(PXCA("ENCOUNTER"))) | 
|---|
| 156 | S I=0 F  S I=$O(LST(I)) Q:'I  W !?4,$E(LST(I),1,75) I $L(LST(I))>75 W !?10,$E(LST(I),76,140) | 
|---|
| 157 | W ! | 
|---|
| 158 | Q | 
|---|
| 159 | ; | 
|---|
| 160 | FNDAPPT ; -- if form is not associated with an appointment see any in clinic | 
|---|
| 161 | I $G(IBDSAEOK) S IBDOK=1 G FNDQ | 
|---|
| 162 | N IBDI,IBDJ,X,NODE,CNT,IOINHI,IOINORM,NEWAPPT,CLNAM,FORMLST,DIR,DIRUT,DUOUT,DTOUT | 
|---|
| 163 | S X="IOINHI;IOINORM" D ENDR^%ZISS | 
|---|
| 164 | S IBDI=$E(IBDF("APPT"),1,7),IBDJ=IBDI+.24,CNT=0 | 
|---|
| 165 | F  S IBDI=$O(^DPT(DFN,"S",IBDI)) Q:'IBDI!(IBDI>IBDJ)  D  G:CNT<1 FNDQ | 
|---|
| 166 | .S NODE=$G(^DPT(DFN,"S",IBDI,0)) | 
|---|
| 167 | .Q:+NODE'=IBDF("CLINIC") | 
|---|
| 168 | .S CNT=CNT+1,CLNAM=$E($P(^SC(IBDF("CLINIC"),0),"^"),1,20),NEWAPPT(CNT)=IBDI | 
|---|
| 169 | .I CNT=1 W $C(7),!!,IOINHI,"Warning:","  You are about to create a stand alone visit for: ",IOINORM,!,$E($P(^DPT(DFN,0),"^"),1,25),?27,CLNAM,?49,$$FMTE^XLFDT(IBDF("APPT")) | 
|---|
| 170 | .S FORMLST=$$FINDID^IBDF18C(DFN,IBDI,"",1) | 
|---|
| 171 | .W !,IOINHI,"Patient has appointment in ",CLNAM,?49,$$FMTE^XLFDT(IBDI)," ID: ",$TR($E(FORMLST,1,($L(FORMLST)-1)),"^",","),IOINORM | 
|---|
| 172 | ; | 
|---|
| 173 | W ! S IBDOK=$$ASKYN^IBDFDE0("Okay to Create Stand Alone Encounter",0) W ! | 
|---|
| 174 | I $G(IBDOK)<0 S IBDOK=0 | 
|---|
| 175 | G:IBDOK FNDQ | 
|---|
| 176 | ; | 
|---|
| 177 | ; -- ask if want to use appt. date time | 
|---|
| 178 | I CNT=1 D | 
|---|
| 179 | .S IBDOK=$$ASKYN^IBDFDE0("Okay to use "_$$FMTE^XLFDT(NEWAPPT(1))_" appointment date/time",1) W ! | 
|---|
| 180 | .I $G(IBDOK)<0 S IBDOK=0 | 
|---|
| 181 | .I IBDOK S IBDF("APPT")=NEWAPPT(1) | 
|---|
| 182 | ; | 
|---|
| 183 | I CNT>1 D | 
|---|
| 184 | .S DIR("A")="" | 
|---|
| 185 | .S DIR(0)="" | 
|---|
| 186 | FNDQ Q | 
|---|