[613] | 1 | SDSCEDT ;ALB/JAM/RBS - ASCD Review and Edit SC value for encounters. ; 4/24/07 4:29pm
|
---|
| 2 | ;;5.3;Scheduling;**495**;Aug 13, 1993;Build 50
|
---|
| 3 | ;;MODIFIED FOR NATIONAL RELEASE from a Class III software product
|
---|
| 4 | ;;known as Service Connected Automated Monitoring (SCAM).
|
---|
| 5 | ;
|
---|
| 6 | Q
|
---|
| 7 | START ; Called by option "SDSC EDIT BY DATE - Edit encounters by date range"
|
---|
| 8 | N SCVST,SCOPT,SDSCEDIT S SDSCEDIT=1
|
---|
| 9 | D HOME^%ZIS
|
---|
| 10 | ; Ask which records should be reviewed.
|
---|
| 11 | S SCOPT=$$SCSEL^SDSCUTL() I SCOPT="" G END
|
---|
| 12 | ; Select correct user type based on security key.
|
---|
| 13 | D TYPE^SDSCUTL
|
---|
| 14 | ; Get start and end date for encounter list.
|
---|
| 15 | D GETDATE^SDSCOMP I SDSCTDT="" G END
|
---|
| 16 | D DIV^SDSCUTL
|
---|
| 17 | D ^DIR
|
---|
| 18 | I $G(DTOUT)!($G(DUOUT)) G END
|
---|
| 19 | S SDSCDVSL=Y,SDSCDVLN=SCLN
|
---|
| 20 | K DIR,X,Y,SCLN
|
---|
| 21 | S SDSCDIV=$S(SDSCDVSL'[SDSCDVLN:","_SDSCDVSL,1:"")
|
---|
| 22 | ; Initialize quit flags.
|
---|
| 23 | S SDQFLG=0,SDFLG=0
|
---|
| 24 | I SDSCTAT'="" D OPT
|
---|
| 25 | I SDSCTAT="" D S SDSCTAT=""
|
---|
| 26 | . S SDSCTAT="N" D OPT Q:SDQFLG=1
|
---|
| 27 | . S SDSCTAT="R" D OPT Q:SDQFLG=1
|
---|
| 28 | . Q
|
---|
| 29 | I SDFLG=0 D EN^DDIOL("No editable encounters found in the specified date range. ",,"!!?10") W *7
|
---|
| 30 | G END
|
---|
| 31 | ;
|
---|
| 32 | OPT ; Loop through requested encounter status for specified date range, display each encounter, and allow edit.
|
---|
| 33 | S SDOEDT=SDSCTDT F S SDOEDT=$O(^SDSC(409.48,"C",SDSCTAT,SDOEDT)) Q:SDOEDT\1>SDEDT Q:(SDOEDT="")!(SDQFLG=1) D
|
---|
| 34 | . S SDOE=0 F S SDOE=$O(^SDSC(409.48,"C",SDSCTAT,SDOEDT,SDOE)) Q:'SDOE!(SDQFLG=1) D
|
---|
| 35 | .. ; Check review selection
|
---|
| 36 | .. S SDV0=$P($$GETOE^SDOE(SDOE),U,5) I SDV0="" Q
|
---|
| 37 | .. S SCVST=$$GET1^DIQ(9000010,SDV0_",",80001,"I")
|
---|
| 38 | .. I SCVST'=SCOPT,SCOPT'=2 Q
|
---|
| 39 | .. ; Initialize flag and do final editability checks on encounter.
|
---|
| 40 | .. S SDEFLG=0 D CHECK
|
---|
| 41 | .. ; If edit flag not set, quit. (Don't display error in this loop.)
|
---|
| 42 | .. I SDEFLG=0 Q
|
---|
| 43 | .. ; Check for sensitive patient
|
---|
| 44 | .. I $$SENS^SDSCUTL(SDPAT,0) Q
|
---|
| 45 | .. ; Display encounter.
|
---|
| 46 | .. D DISPLAY,DISPLAY1
|
---|
| 47 | .. ; IF quit flag set, quit.
|
---|
| 48 | .. I SDQFLG=1 Q
|
---|
| 49 | .. ;Check if data came from an ancillary package and okay to edit
|
---|
| 50 | .. I '$$ANCPKG^SDSCUTL(SDOE) S SDSCMSG="Cannot edit encounter." Q
|
---|
| 51 | .. ; Otherwise, edit encounter.
|
---|
| 52 | .. D EDIT
|
---|
| 53 | Q
|
---|
| 54 | START1 ; Called by option "SDSC SINGLE EDIT - Edit single encounter"
|
---|
| 55 | N SDSCEDIT S SDSCEDIT=1
|
---|
| 56 | D HOME^%ZIS
|
---|
| 57 | D TYPE^SDSCUTL
|
---|
| 58 | ; Initialize quit flag.
|
---|
| 59 | S SDQFLG=0
|
---|
| 60 | F D Q:SDQFLG=1
|
---|
| 61 | . S DIC(0)="AEMNZ",DIC="^SDSC(409.48,"
|
---|
| 62 | . S DIC("A")="Select OUTPATIENT ENCOUNTER: "
|
---|
| 63 | . I SDSCCR]"" S DIC("S")=SDSCCR_",$P($G(^SCE(+Y,0)),""^"",6)="""""
|
---|
| 64 | . I SDSCCR="" S DIC("S")="I $P($G(^SCE(+Y,0)),""^"",6)="""""
|
---|
| 65 | . W !
|
---|
| 66 | . D ^DIC
|
---|
| 67 | . I +Y=-1!$D(DTOUT)!$D(DUOUT) S SDQFLG=1 Q
|
---|
| 68 | . S SDOE=+Y,SDOEDT=$P($G(^SDSC(409.48,SDOE,0)),U,7)
|
---|
| 69 | . ; Separate editing checks and display code for ListMan.
|
---|
| 70 | . ; Initialize flag and do final editability checks on encounter.
|
---|
| 71 | . S SDEFLG=0 D CHECK
|
---|
| 72 | . ; If edit flag not set, display error and quit.
|
---|
| 73 | . I SDEFLG=0 D EN^DDIOL("Cannot edit encounter# "_SDOE_". Missing data. ",,"!!?10") W *7 Q
|
---|
| 74 | . ; Check for sensitive patient
|
---|
| 75 | . I $$SENS^SDSCUTL(SDPAT,0) Q
|
---|
| 76 | . ; Display encounter.
|
---|
| 77 | . D DISPLAY,DISPLAY1
|
---|
| 78 | . ; If quit flag set, quit.
|
---|
| 79 | . I SDQFLG=1 Q
|
---|
| 80 | . I '$$ANCPKG^SDSCUTL(SDOE) D EN^DDIOL("Cannot edit encounter.") Q
|
---|
| 81 | . ; Otherwise, edit encounter.
|
---|
| 82 | . D EDIT
|
---|
| 83 | G END
|
---|
| 84 | ;
|
---|
| 85 | CHECK ; Final editing checks for specified encounter.
|
---|
| 86 | ; Check division, if doesn't match, quit.
|
---|
| 87 | I $G(SDSCDIV)'="",(","_SDSCDIV_",")'[(","_$P(^SDSC(409.48,SDOE,0),U,12)_",") Q
|
---|
| 88 | ; Get encounter data. If no encounter data, quit.
|
---|
| 89 | S SDOEDAT=$$GETOE^SDOE(SDOE)
|
---|
| 90 | I SDOEDAT="" S SDSCMSG=" no encounter zero node" Q
|
---|
| 91 | ; Get patient IEN.
|
---|
| 92 | S SDPAT=$P(SDOEDAT,U,2)
|
---|
| 93 | ; Get visit file entry. If no visit, quit.
|
---|
| 94 | S SDV0=$P(SDOEDAT,U,5) I SDV0="" S SDSCMSG=" encounter missing visit number" Q
|
---|
| 95 | I $G(^AUPNVSIT(SDV0,0))="" S SDSCMSG=" no visit zero node" Q
|
---|
| 96 | ; Get current service connection value from visit.
|
---|
| 97 | S SDOSC=$$GET1^DIQ(9000010,SDV0_",",80001,"I")
|
---|
| 98 | ; Get package and source info from visit file. If missing, quit.
|
---|
| 99 | S SDSCPKG=$$GET1^DIQ(9000010,SDV0_",",81202,"E") I SDSCPKG="" S SDSCPKG="SCHEDULING"
|
---|
| 100 | S SDSCSRC=$$GET1^DIQ(9000010,SDV0_",",81203,"E") I SDSCSRC="" S SDSCSRC="AUTOMATED SC DESIGNATION"
|
---|
| 101 | ; Data checks successful. Set flags to allow edit to continue
|
---|
| 102 | S SDEFLG=1,SDFLG=1
|
---|
| 103 | Q
|
---|
| 104 | DISPLAY ; Compile display for the specified encounter into a TMP global.
|
---|
| 105 | ; Clear scratch global and reset line counter.
|
---|
| 106 | K ^TMP("SDSCLST",$J) S SDLN=0
|
---|
| 107 | S SDTMP="Encounter "_SDOE
|
---|
| 108 | I SDOSC=1 S SDTMP=SDTMP_" is marked as service connected and may not be."
|
---|
| 109 | E S SDTMP=SDTMP_" is NOT marked as service connected."
|
---|
| 110 | D LINE(SDTMP)
|
---|
| 111 | D LINE(" ")
|
---|
| 112 | ; Display the date for the encounter.
|
---|
| 113 | D LINE("Date of Encounter: "_$$FMTE^XLFDT(SDOEDT,"5MZ"))
|
---|
| 114 | ; Display the clinic for the encounter.
|
---|
| 115 | S SDCLIN=$P(SDOEDAT,U,4),SDTMP="Location: "
|
---|
| 116 | I SDCLIN]"" S SDTMP=SDTMP_$P($G(^SC(SDCLIN,0)),U)
|
---|
| 117 | D LINE(SDTMP)
|
---|
| 118 | ; Display the primary provider for the visit.
|
---|
| 119 | S SDPRV=$P($G(^SDSC(409.48,SDOE,0)),U,8),SDTMP="Primary Provider: "
|
---|
| 120 | I SDPRV]"" S SDTMP=SDTMP_$$UP^XLFSTR($$NAME^XUSER(SDPRV))
|
---|
| 121 | D LINE(SDTMP)
|
---|
| 122 | ; Display the patient name and last 4 SSN.
|
---|
| 123 | S SDTMP="Patient: "
|
---|
| 124 | I SDPAT]"" D
|
---|
| 125 | . N DFN,VADM S DFN=SDPAT D DEM^VADPT
|
---|
| 126 | . S SDTMP=SDTMP_$E(VADM(1),1,25)_" ("_$E($P(VADM(2),U),6,9)_")"
|
---|
| 127 | . ; Add flag if patient is considered sensitive.
|
---|
| 128 | . I +$P($G(^DGSL(38.1,+SDPAT,0)),U,2) S SDTMP=SDTMP_" *SENSITIVE*"
|
---|
| 129 | D LINE(SDTMP)
|
---|
| 130 | ; Compile patient insurance information.
|
---|
| 131 | D INS
|
---|
| 132 | ; Review VBA/ICD9 SC response
|
---|
| 133 | D VBAICD
|
---|
| 134 | ; Compile all POVs for this visit.
|
---|
| 135 | D GETPDX^SDOERPC(.SDPDX,SDOE),POV2S
|
---|
| 136 | ; Compile all disabilities for this patient.
|
---|
| 137 | D DIS2S
|
---|
| 138 | Q
|
---|
| 139 | DISPLAY1 ; Display the specified encounter.
|
---|
| 140 | W @IOF
|
---|
| 141 | S L=0
|
---|
| 142 | F SDLN=1:1 Q:'$D(^TMP("SDSCLST",$J,SDLN,0)) D Q:$G(SDQFLG)=1
|
---|
| 143 | . I L+3>IOSL D CONT^SDSCUTL S L=2 Q:$G(SDQFLG)=1
|
---|
| 144 | . W !,^TMP("SDSCLST",$J,SDLN,0)
|
---|
| 145 | . S L=L+1
|
---|
| 146 | . Q
|
---|
| 147 | W !
|
---|
| 148 | Q
|
---|
| 149 | INS ; Compile patient means test and insurance information.
|
---|
| 150 | S SDCP=$$BIL^DGMTUB(SDPAT,SDOEDT)
|
---|
| 151 | D LINE(" ")
|
---|
| 152 | D LINE("Patient "_$S(SDCP=1:"is",1:"is not")_" copay eligible.")
|
---|
| 153 | S SDACT=+$$INSUR^IBBAPI(SDPAT,SDOEDT)
|
---|
| 154 | D LINE("Patient "_$S(SDACT=1:"is",1:"is not")_" insured.")
|
---|
| 155 | I 'SDACT Q
|
---|
| 156 | ; ICR#: 4419 (SUPPORTED) - look for Outpatient coverage
|
---|
| 157 | S SDCOV=$S($$INSUR^IBBAPI(SDPAT,SDOEDT,"O","",16)<1:0,1:1)
|
---|
| 158 | D LINE("Outpatient Coverage is "_$S(SDCOV:"",1:"not ")_"covered.")
|
---|
| 159 | Q
|
---|
| 160 | POV2S ; Compile all POV entries for the specified visit.
|
---|
| 161 | D LINE(" "),LINE(" POVs/ICDs:")
|
---|
| 162 | S SDVPOV0=0 F S SDVPOV0=$O(^AUPNVPOV("AD",SDV0,SDVPOV0)) Q:'SDVPOV0 D
|
---|
| 163 | . S SDPOV=$P($G(^AUPNVPOV(SDVPOV0,0)),U)
|
---|
| 164 | . ; Added display if diagnosis is marked service connected (CIDC) - ALA 9/27/05
|
---|
| 165 | . S SDPOVSC=$P($G(^AUPNVPOV(SDVPOV0,800)),U)
|
---|
| 166 | . S SCDX=$$ICDDX^ICDCODE(SDPOV,+SDOEDAT)
|
---|
| 167 | . S SDPSC=$S(SDPDX=$P(SCDX,U):"*P* ",1:"")_$S(SDPOVSC=1:"*SC* ",1:"")
|
---|
| 168 | . S SDTMP=$J(SDPSC,15)_$P(SCDX,U,2)_" "
|
---|
| 169 | . S SDTMP=$E(SDTMP,1,23)_$P(SCDX,U,4)
|
---|
| 170 | . D LINE(SDTMP)
|
---|
| 171 | Q
|
---|
| 172 | DIS2S ; Compile all rated disabilities for this patient.
|
---|
| 173 | ;DBIA4807 and DBIA1476
|
---|
| 174 | D LINE(" ")
|
---|
| 175 | D LINE(" Rated Disabilities:")
|
---|
| 176 | N SCRD,I,I1,I2
|
---|
| 177 | D RDIS^DGRPDB(SDPAT,.SCRD)
|
---|
| 178 | S I=0 F S I=$O(SCRD(I)) Q:'I D
|
---|
| 179 | . S I1=SCRD(I)
|
---|
| 180 | . S I2=$S($D(^DIC(31,+I1,0)):$P(^(0),U,3)_" "_$P(^(0),"^",1)_" ("_+$P(I1,"^",2)_"%-"_$S($P(I1,"^",3):"SC",$P(I1,"^",3)']"":"not specified",1:"NSC")_")",1:"")
|
---|
| 181 | . D LINE(" "_I2)
|
---|
| 182 | Q
|
---|
| 183 | VBAICD ;ASCD (VBA/ICD9) SC evaluation
|
---|
| 184 | N Y,VAL
|
---|
| 185 | D LINE(" ")
|
---|
| 186 | S Y=$$SC^SDSCAPI(SDPAT,,SDOE)
|
---|
| 187 | D LINE("ASCD Evaluation: "_$P(Y,"^",2))
|
---|
| 188 | Q
|
---|
| 189 | LINE(LINE) ; Save a line of text into the scratch global.
|
---|
| 190 | S SDLN=SDLN+1,^TMP("SDSCLST",$J,SDLN,0)=LINE
|
---|
| 191 | Q
|
---|
| 192 | EDIT ; Allow user to edit the specified encounter or send for review. (Roll and scroll)
|
---|
| 193 | K DIR,X,Y
|
---|
| 194 | S DIR(0)=SDOPT
|
---|
| 195 | S DIR("A")="DO YOU WANT TO CHANGE THE SERVICE CONNECTION FOR THIS ENCOUNTER? "
|
---|
| 196 | S DIR("?")=" "
|
---|
| 197 | S DIR("?",1)="Enter:"
|
---|
| 198 | S DIR("?",2)=" 'YES' to modify this encounter's Service Connected statuses."
|
---|
| 199 | S DIR("?",3)=" 'NO' to retain this encounter's Service Connected statuses."
|
---|
| 200 | S DIR("?",4)=" 'SKIP' to skip this encounter and review it later."
|
---|
| 201 | I SDOPT["REVIEW" S DIR("?",5)=" 'REVIEW' to flag this encounter for clinical review."
|
---|
| 202 | D ^DIR
|
---|
| 203 | I $D(DTOUT)!$D(DUOUT) S SDQFLG=1 Q
|
---|
| 204 | S SDANS=Y K DIR,X,Y
|
---|
| 205 | LEDT ; ListMan Entry Point for Editing
|
---|
| 206 | ; If user selected 'SKIP', postpone action on this entry.
|
---|
| 207 | I $G(SDANS)="S" Q
|
---|
| 208 | ; Set 'REVIEW' flag if required.
|
---|
| 209 | S SDRFLG=$S(SDANS="R":1,1:0)
|
---|
| 210 | ; Lock record before editing
|
---|
| 211 | I '$$LOCK^SDSCUTL(SDOE) D Q
|
---|
| 212 | . W !!,"*** Encounter ",SDOE," locked by another user. Try later. ***" H 2
|
---|
| 213 | ; If user answered 'YES' then send call PCE API.
|
---|
| 214 | I SDANS="Y" D
|
---|
| 215 | . N SDEDIT S SDEDIT=1
|
---|
| 216 | . S X=$$INTV^PXAPI("POV",SDSCPKG,SDSCSRC,SDV0) HANG 1
|
---|
| 217 | I '$D(^SDSC(409.48,SDOE)) D G CTUP ;Entry deleted because of review match
|
---|
| 218 | . W !!,"*** Encounter ",SDOE," Removed from ASCD File - True Match Found ***" H 2
|
---|
| 219 | S SDSCC=$$GET1^DIQ(9000010,SDV0_",",80001,"I")
|
---|
| 220 | I SDSCC="",$D(^SDSC(409.48,SDOE)) D G CTUP ;Remove entry if no SC value
|
---|
| 221 | . N DA,DIK S DA=SDOE,DIK="^SDSC(409.48," D ^DIK
|
---|
| 222 | . W !!,"*** Encounter ",SDOE," Removed from ASCD File - No SC value found in Visit File ***" H 2
|
---|
| 223 | ; Store any changes the user made in the TRACK EDITS multiple.
|
---|
| 224 | D STEDT^SDSCUTL(SDOE,SDTYPE,SDRFLG,SDSCC)
|
---|
| 225 | CTUP ; Update claims tracking file in IB.
|
---|
| 226 | D
|
---|
| 227 | . I '$D(^SDSC(409.48,SDOE)) N SCTUPD S SCTUPD=$$RNBU^IBRSUTL(SDOE,1) Q
|
---|
| 228 | . D CLM^SDSCCLM(SDOE)
|
---|
| 229 | D UNLOCK^SDSCUTL(SDOE)
|
---|
| 230 | Q
|
---|
| 231 | ;
|
---|
| 232 | END ; Clear all variables before exiting.
|
---|
| 233 | K SDSCTDT,SDEDT,SDOEDT,SDOE,SDOEX,SDEC,SDPAT,SDPASS,SDICD,SDPOV,SDSCC
|
---|
| 234 | K SDCST,SDSCPKG,SDSCSRC,SDPOVSC,SDPSC,SCDX,SDSCDVSL,SDFILEOK,SDV0
|
---|
| 235 | K SDVPOV0,SDPD,SDIENS,DA,DIE,DIC,DLAYGO,DIERR,ERR,SDRFLG,SDQFLG,SDTYPE
|
---|
| 236 | K SDOPT,SDSCTAT,SDSCDIV,SDSCDVLN,SDSCMSG,SDPRV,SDCLIN,SDLIST,P,L,SDABRT
|
---|
| 237 | K X,X1,X2,Y,DTOUT,DUOUT,DIR,SDACT,SDCOV,SDSCCR,SDOEDAT,SDEFLG,SDOSC,SDCP
|
---|
| 238 | K SDFLG,SDLN,SDTMP,SDANS,SDSCBDT,SDSCEDT,SDCNT,SDDATA,SDPDX
|
---|
| 239 | D KVA^VADPT
|
---|
| 240 | Q
|
---|