[613] | 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
|
---|