| 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
 | 
|---|