| 1 | SCENI0 ;ALB/SCK - INCOMPLETE ENCOUNTER MGMT MAIN LM DISPLAY ; 07-MAY-1997 | 
|---|
| 2 | ;;5.3;Scheduling;**66**;AUG 13, 1993 | 
|---|
| 3 | ; | 
|---|
| 4 | EN ;  Entry point for IEMM LM display | 
|---|
| 5 | ; Variables | 
|---|
| 6 | ;   VAUTC,VAUTD -  Clinic and Division o/m/a arrays | 
|---|
| 7 | ;   SDENTYP     -  Search type, P:patient, C:Clinic, E:Error Code | 
|---|
| 8 | ;   SDCLN       -  Clinic from selection lookup | 
|---|
| 9 | ;   SDDT        -  Date range for search, Begin^End format | 
|---|
| 10 | ;   SDY         -  Local variable used in selection criteria | 
|---|
| 11 | ;   SDEVAL      -  Error code value | 
|---|
| 12 | ;   SDFN        -  Patient DFN for local use | 
|---|
| 13 | ;   SDIEMM      -  Flag for IEMM | 
|---|
| 14 | ; | 
|---|
| 15 | N SDENTYP,DFN,SDCLN,SDDT,VAUTC,VAUTD,SDY,SDEVAL,SDFN,SDIEMM | 
|---|
| 16 | K X,SDB,XQORNOD,DA,DR,DIE,%B | 
|---|
| 17 | ; | 
|---|
| 18 | AGN Q:'$$ENTRY^SCUTIE2(.SDY) | 
|---|
| 19 | I $G(SDENTYP)']"" G AGN | 
|---|
| 20 | ; | 
|---|
| 21 | I SDENTYP["P" D | 
|---|
| 22 | . S SDFN=+SDY | 
|---|
| 23 | . S VAUTC=1 | 
|---|
| 24 | . S X=$P($G(^DG(43,1,"SCLR")),U,12) | 
|---|
| 25 | . S SDDT=$$FMADD^XLFDT($$DT^XLFDT,-X)_U_$$DT^XLFDT | 
|---|
| 26 | ; | 
|---|
| 27 | I SDENTYP["C" D  G:'$$ASKDT^SCENI01(.SDDT) ENQ | 
|---|
| 28 | . S SDCLN=+SDY | 
|---|
| 29 | . S VAUTC=0,VAUTC(+SDY)=$P(^SC(+SDY,0),U) | 
|---|
| 30 | ; | 
|---|
| 31 | I SDENTYP["E" D  G:'$$ASKDT^SCENI01(.SDDT) ENQ | 
|---|
| 32 | . S VAUTC=1 | 
|---|
| 33 | . S SDEVAL=+SDY | 
|---|
| 34 | ; | 
|---|
| 35 | S VAUTD=1 | 
|---|
| 36 | EN1 D WAIT^DICD | 
|---|
| 37 | I $G(FLG1) K XQORS,VALMEVL | 
|---|
| 38 | S SDIEMM=1 | 
|---|
| 39 | D EN^VALM("SCENI INCOMPLETE ENC MGT") | 
|---|
| 40 | ENQ Q | 
|---|
| 41 | ; | 
|---|
| 42 | ENP(SDXPTR) ; Entry point for Data validation, Patient Predefined | 
|---|
| 43 | ;  This entry point will jump to the second LM screen and display any | 
|---|
| 44 | ;  errors for the encounter. | 
|---|
| 45 | ; | 
|---|
| 46 | ;  Input | 
|---|
| 47 | ;     SDXMT - Pointer to transmission file, 409.73 | 
|---|
| 48 | ; | 
|---|
| 49 | ;  Variables | 
|---|
| 50 | ;     FLG1  - Flag for patient defined entry point | 
|---|
| 51 | ; | 
|---|
| 52 | N FLG1,SDIEMM | 
|---|
| 53 | S SDIEMM=1 | 
|---|
| 54 | ;S VALMBCK="R" | 
|---|
| 55 | S FLG1=1 | 
|---|
| 56 | D EN^SCENIA0 | 
|---|
| 57 | Q | 
|---|
| 58 | ; | 
|---|
| 59 | HDR ; -- header code | 
|---|
| 60 | N SDCLN | 
|---|
| 61 | ; | 
|---|
| 62 | S VALMHDR(1)="Date Range: "_$$FDATE^VALM1($P(SDDT,U))_" thru "_$$FDATE^VALM1($P(SDDT,U,2)) | 
|---|
| 63 | ; | 
|---|
| 64 | I SDENTYP["P" D | 
|---|
| 65 | . S VALMHDR(2)="   Patient: "_$P(^DPT(SDFN,0),U) | 
|---|
| 66 | I SDENTYP["C" D | 
|---|
| 67 | . S SDCLN=$O(VAUTC(0)) | 
|---|
| 68 | . S VALMHDR(2)="    Clinic: "_$E(VAUTC(SDCLN),1,25) | 
|---|
| 69 | I SDENTYP["E" D | 
|---|
| 70 | . S VALMHDR(2)="Error Code: "_$E($P(^SD(409.76,SDEVAL,1),U),1,60) | 
|---|
| 71 | S VALMSG="'*' Deleted Encounter            Enter ?? for more actions" | 
|---|
| 72 | Q | 
|---|
| 73 | ; | 
|---|
| 74 | INIT ; -- init variables and list array | 
|---|
| 75 | N SDCNT | 
|---|
| 76 | ; | 
|---|
| 77 | K XQORNOD | 
|---|
| 78 | K ^TMP("SCENI",$J) ; Sorting global | 
|---|
| 79 | K ^TMP("SCEN LM",$J) ; LM Display global | 
|---|
| 80 | K ^TMP("SCENIDX",$J) ; Index for expand encounter | 
|---|
| 81 | D CLEAN^VALM10 | 
|---|
| 82 | ; | 
|---|
| 83 | S BL="",$P(BL," ",30)="" | 
|---|
| 84 | S X=VALMDDF("INDEX"),IC=$P(X,U,2),IW=$P(X,U,3) | 
|---|
| 85 | S X=VALMDDF("ENCOUNTER"),EC=$P(X,U,2),EW=$P(X,U,3) | 
|---|
| 86 | S X=VALMDDF("SSN"),SC=$P(X,U,2),SW=$P(X,U,3) | 
|---|
| 87 | S X=VALMDDF("PATIENT"),PC=$P(X,U,2),PW=$P(X,U,3) | 
|---|
| 88 | S X=VALMDDF("DELETED"),DC=$P(X,U,2),DW=$P(X,U,3) | 
|---|
| 89 | ; | 
|---|
| 90 | D BLD,BLDLM | 
|---|
| 91 | I '$D(^TMP("SCENI",$J)) D | 
|---|
| 92 | . S (SDCNT,VALMCNT)=0 | 
|---|
| 93 | . D SET(" "),SET("  No Incomplete Encounters found.") | 
|---|
| 94 | Q | 
|---|
| 95 | ; | 
|---|
| 96 | BLD ; Order through the Xmited OE Error file on encounter Xref | 
|---|
| 97 | ;  Variables | 
|---|
| 98 | ;       SDOEDT  -  Encounter date | 
|---|
| 99 | ;       SDOE    -  Pointer to #409.68 | 
|---|
| 100 | ;       SDE     -  End date of date range | 
|---|
| 101 | ;       SDCNT   -  Count of entries | 
|---|
| 102 | ;       SDXMT   -  Pointer to #409.73 | 
|---|
| 103 | ;       SDXER   -  Pointer to #409.75 | 
|---|
| 104 | ; | 
|---|
| 105 | N SDOEDT,SDOE,SDE,SDCNT,SDXMT,SDXER | 
|---|
| 106 | ; | 
|---|
| 107 | Q:'$D(SDDT) | 
|---|
| 108 | S SDOEDT=$P(SDDT,U)-.1,SDE=$P(SDDT,U,2)+.9,(SDCNT,VALMCNT)=0 | 
|---|
| 109 | I SDENTYP["P" D PLKUP(SDFN) Q | 
|---|
| 110 | I SDENTYP["C" D CLKUP($O(VAUTC(0))) Q | 
|---|
| 111 | ;the remaining is for a error code look up | 
|---|
| 112 | F  S SDOEDT=$O(^SD(409.75,"AEDT",SDOEDT)) Q:'SDOEDT!(SDOEDT>SDE)  D | 
|---|
| 113 | . S SDXMT=0 F  S SDXMT=$O(^SD(409.75,"AEDT",SDOEDT,SDXMT)) Q:'SDXMT  D | 
|---|
| 114 | .. S SDXER=0 F  S SDXER=$O(^SD(409.75,"AEDT",SDOEDT,SDXMT,SDXER)) Q:'SDXER  I $D(^SD(409.75,SDXER,0)) D:$P(^SD(409.75,SDXER,0),U,2)=SDEVAL BLDA(SDXMT,SDOEDT) | 
|---|
| 115 | Q | 
|---|
| 116 | ; | 
|---|
| 117 | BLDA(SDXMT,SDOEDT) ;  Build list entry, and retreive encounter information | 
|---|
| 118 | ;  Input | 
|---|
| 119 | ;      SDXMT - Pointer to $409.73 | 
|---|
| 120 | ;     SDOEDT - Date of encounter | 
|---|
| 121 | ; | 
|---|
| 122 | ;  Out | 
|---|
| 123 | ;      ^TMP("SCEN LM",$J,Patient Name,Encounter Date,Xmt Ptr)=DFN^BID^Delete marker ('*') | 
|---|
| 124 | ; | 
|---|
| 125 | N DFN | 
|---|
| 126 | ; | 
|---|
| 127 | Q:'SDOEDT | 
|---|
| 128 | S SDCNT=SDCNT+1,SDDEL="" | 
|---|
| 129 | S SCSTAT=$$OPENC^SCUTIE1(SDXMT,"SCINF") | 
|---|
| 130 | ; | 
|---|
| 131 | S:SCSTAT=1 SDDEL="*" | 
|---|
| 132 | I SCSTAT<0 Q | 
|---|
| 133 | ; | 
|---|
| 134 | S SDNAME=$$LOWER^VALM1($P(^DPT(SCINF("DFN"),0),U)) | 
|---|
| 135 | S DFN=SCINF("DFN") | 
|---|
| 136 | D PID^VADPT6 | 
|---|
| 137 | S ^TMP("SCEN LM",$J,SDNAME,SDOEDT,SDXMT)=SCINF("DFN")_U_VA("BID")_U_$G(SDDEL) | 
|---|
| 138 | K SDDEL | 
|---|
| 139 | Q | 
|---|
| 140 | ; | 
|---|
| 141 | BLDLM ; Build display list array for LM | 
|---|
| 142 | ;    Variables | 
|---|
| 143 | ;        SDN  - Patient Name | 
|---|
| 144 | ;        SDD  - Encounter Date | 
|---|
| 145 | ;        SDXT - Pointer to #409.73, transmission pointer | 
|---|
| 146 | ; | 
|---|
| 147 | S SDCNT=0 | 
|---|
| 148 | S SDN="" F  S SDN=$O(^TMP("SCEN LM",$J,SDN)) Q:SDN']""  D | 
|---|
| 149 | . S SDD="" F  S SDD=$O(^TMP("SCEN LM",$J,SDN,SDD)) Q:'SDD  D | 
|---|
| 150 | .. S SDXT=""  F  S SDXT=$O(^TMP("SCEN LM",$J,SDN,SDD,SDXT)) Q:'SDXT  D BLDLM1(SDXT) | 
|---|
| 151 | Q | 
|---|
| 152 | ; | 
|---|
| 153 | BLDLM1(SDXT) ; Build LM Display line | 
|---|
| 154 | ;    Input | 
|---|
| 155 | ;          SDXT - DFN^BID^Delete marker ('*') | 
|---|
| 156 | ; | 
|---|
| 157 | K SDX | 
|---|
| 158 | S SDCNT=SDCNT+1,SDX="",$P(SDX," ",VALMWD+1)="" | 
|---|
| 159 | S SDX=$E(SDX,1,IC-1)_$E(SDCNT_BL,1,IW)_$E(SDX,IC+IW+1,VALMWD) | 
|---|
| 160 | S SDX=$E(SDX,1,DC-1)_$E($P(^TMP("SCEN LM",$J,SDN,SDD,SDXT),U,3)_BL,1,DW)_$E(SDX,DC+DW+1,VALMWD) | 
|---|
| 161 | S SDX=$E(SDX,1,PC-1)_$E(SDN_BL,1,PW)_$E(SDX,PC+PW+1,VALMWD) | 
|---|
| 162 | S SDX=$E(SDX,1,SC-1)_$E($P(^TMP("SCEN LM",$J,SDN,SDD,SDXT),U,2)_BL,1,SW)_$E(SDX,SC+SW+1,VALMWD) | 
|---|
| 163 | S SDX=$E(SDX,1,EC-1)_$E($$FMTE^XLFDT(SDD,1)_BL,1,EW)_$E(SDX,EC+EW+1,VALMWD) | 
|---|
| 164 | D SET(SDX,SDXT) | 
|---|
| 165 | Q | 
|---|
| 166 | ; | 
|---|
| 167 | SET(X,SDXMT) ; | 
|---|
| 168 | N SCEN | 
|---|
| 169 | ; | 
|---|
| 170 | S VALMCNT=VALMCNT+1,^TMP("SCENI",$J,VALMCNT,0)=X | 
|---|
| 171 | Q:'SDCNT | 
|---|
| 172 | S ^TMP("SCENI",$J,"IDX",VALMCNT,SDCNT)="" | 
|---|
| 173 | S ^TMP("SCENI",$J,SDCNT,0)=X | 
|---|
| 174 | S ^TMP("SCENI",$J,"XMT",SDCNT,SDXMT)="" | 
|---|
| 175 | ; | 
|---|
| 176 | I $$OPENC^SCUTIE1(SDXMT,"SCEN")>-1 D | 
|---|
| 177 | . S ^TMP("SCENIDX",$J,SDCNT)=VALMCNT_U_SCEN("DFN")_U_SCEN("ENCOUNTER")_U_SCEN("CLINIC") | 
|---|
| 178 | Q | 
|---|
| 179 | ; | 
|---|
| 180 | HELP ; -- help code | 
|---|
| 181 | S X="?" D DISP^XQORM1 W !! | 
|---|
| 182 | Q | 
|---|
| 183 | ; | 
|---|
| 184 | EXIT ; -- exit code | 
|---|
| 185 | I $D(VALMBCK),VALMBCK="R" D REFRESH^VALM S VALMBCK=$P(VALMBCK,"R")_$P(VALMBCK,"R",2) G EX1 | 
|---|
| 186 | K ^TMP("SCENI",$J),^TMP("SCEN LM",$J),^TMP("SCENIDX",$J),^TMP("SCENI TMP",$J) | 
|---|
| 187 | I '$G(FLG1) K ^TMP("SDAMIDX",$J) | 
|---|
| 188 | K VA,SDCLN,SDIV,SDENDDT1,SDNR,SDPRDIV,ANS,DFN,EC,EW,IC,IW,PC,PW,SC,SW,SDX,DC,DW,SDNAME,SDFN,VAUTINI,SDCNT,DIC,BL | 
|---|
| 189 | K SDOK,SCINF,RTN,SCSTAT,SCEN,RESULT,SCTEXT,LINE,SDDEL,SDD,SDN,SDXT,SDBDT,SDCL,SDDA,SDOEDT,SDOEL,SDVIEN,SDXMT | 
|---|
| 190 | K VALMDDF | 
|---|
| 191 | D FULL^VALM1 | 
|---|
| 192 | D CLEAN^VALM10 | 
|---|
| 193 | EX1 Q | 
|---|
| 194 | ; | 
|---|
| 195 | PLKUP(SDFN) ; | 
|---|
| 196 | ;This is the lookup by patient. | 
|---|
| 197 | ;SDFN is the DFN of the patient. | 
|---|
| 198 | ; | 
|---|
| 199 | N COD,SDXER | 
|---|
| 200 | S COD="" | 
|---|
| 201 | F  S COD=$O(^SD(409.75,"ACOD",SDFN,COD)) Q:COD=""  S SDXER=0 F  S SDXER=$O(^SD(409.75,"ACOD",SDFN,COD,SDXER)) Q:SDXER=""  DO | 
|---|
| 202 | .N NODE,ANS | 
|---|
| 203 | .S NODE=$G(^SD(409.75,SDXER,0)) I NODE=""!($P(NODE,U,1)'>0) Q | 
|---|
| 204 | .S ANS=$$CHKDATE($P(NODE,U,1),SDOEDT,SDE) | 
|---|
| 205 | .I ANS D BLDA($P(NODE,U,1),$P(ANS,U,2)) | 
|---|
| 206 | .Q | 
|---|
| 207 | Q | 
|---|
| 208 | ; | 
|---|
| 209 | CLKUP(SDCLN) ; | 
|---|
| 210 | ; | 
|---|
| 211 | ;This is the lookup by clinic. | 
|---|
| 212 | ;SDCLN is the IEN of the clinic | 
|---|
| 213 | ; | 
|---|
| 214 | N SDXER,XMIT,ANS | 
|---|
| 215 | S SDXER=0 | 
|---|
| 216 | F  S SDXER=$O(^SD(409.75,"AECL",SDCLN,SDXER)) Q:SDXER=""  S XMIT=$P($G(^SD(409.75,SDXER,0)),U,1) I XMIT]"" S ANS=$$CHKDATE(XMIT,SDOEDT,SDE) I ANS D BLDA(XMIT,$P(ANS,U,2)) | 
|---|
| 217 | Q | 
|---|
| 218 | ; | 
|---|
| 219 | CHKDATE(XMIT,BDT,EDT) ; | 
|---|
| 220 | ;this function call ensures that the date of the encounter is within | 
|---|
| 221 | ;the parameters. | 
|---|
| 222 | ; | 
|---|
| 223 | ;XMIT - IEN of 409.73 | 
|---|
| 224 | ;BDT - the beginning date | 
|---|
| 225 | ;EDT - the ending date | 
|---|
| 226 | ; | 
|---|
| 227 | N ANS | 
|---|
| 228 | S XMIT=$G(^SD(409.73,XMIT,0)) | 
|---|
| 229 | I XMIT="" S ANS=0 G CHKQ | 
|---|
| 230 | I $P(XMIT,U,2)]"" S DATE=$P($G(^SCE($P(XMIT,U,2),0)),U,1) | 
|---|
| 231 | I $P(XMIT,U,3)]"" S DATE=$P($G(^SD(409.74,$P(XMIT,U,3),0)),U,1) | 
|---|
| 232 | I (DATE<BDT)!(DATE>EDT) S ANS=0 | 
|---|
| 233 | E  S ANS="1^"_DATE | 
|---|
| 234 | CHKQ Q ANS | 
|---|