| 1 | DVBARQP ;ALB/JLU-7131 request processing routine ;1/28/93 | 
|---|
| 2 | ;;2.7;AMIE;**32**;Apr 10, 1995 | 
|---|
| 3 | BEG ; | 
|---|
| 4 | D INITIAL | 
|---|
| 5 | D INITRPT^DVBAUTL3 | 
|---|
| 6 | F  DO  I DVBANY>0!($D(DTOUT)) Q | 
|---|
| 7 | .S DVBAOUT=0 | 
|---|
| 8 | .F  DO  I $D(DTOUT)!($D(DUOUT))!(DVBAOUT) Q | 
|---|
| 9 | ..D DRAW | 
|---|
| 10 | ..D READ I $D(DTOUT)!($D(DUOUT))!(DVBAOUT) Q | 
|---|
| 11 | ..D ADJ | 
|---|
| 12 | ..Q | 
|---|
| 13 | .D FILE | 
|---|
| 14 | .Q | 
|---|
| 15 | D EXIT | 
|---|
| 16 | Q | 
|---|
| 17 | ; | 
|---|
| 18 | EXIT K A,ADMNUM,DA,DIE,DIR,DR,DTOUT,DUOUT,DVBADSCH,DVBAER,DVBAHD21,DVBAHD22,DVBALN,DVBAOLD,DVBAOUT,DVBARPT,DVBATDT,DVBATITL,DVBAX,X,Z,DVBAP,DVBAO,DVBANY | 
|---|
| 19 | Q | 
|---|
| 20 | ; | 
|---|
| 21 | INITIAL ;This subroutine will initialize most of the variable needed for this | 
|---|
| 22 | ;option. | 
|---|
| 23 | S $P(DVBALN,"-",80)="" | 
|---|
| 24 | S DVBATITL="7131 Report Requesting" | 
|---|
| 25 | S X="NOW",%DT="ST" | 
|---|
| 26 | D ^%DT | 
|---|
| 27 | X ^DD("DD") | 
|---|
| 28 | S DVBATDT=Y | 
|---|
| 29 | I $D(ADMNUM) D ADM | 
|---|
| 30 | I DVBDOC="L" D ACT | 
|---|
| 31 | D SSNOUT^DVBCUTIL | 
|---|
| 32 | S SSN=DVBCSSNO | 
|---|
| 33 | S DVBANY=0 | 
|---|
| 34 | Q | 
|---|
| 35 | ; | 
|---|
| 36 | ADM ;sets up admission date variable and discharge variable if applicable | 
|---|
| 37 | S Y=DVBREQDT | 
|---|
| 38 | D DD^%DT | 
|---|
| 39 | S DVBAHD21="Admission Date: "_Y | 
|---|
| 40 | I '$D(^DGPM(+ADMNUM,0)) K Y Q | 
|---|
| 41 | I $P(^DGPM(+ADMNUM,0),U,17)]"" DO | 
|---|
| 42 | .S Y=$P(^(0),U,17) ;naked from line before | 
|---|
| 43 | .S Y=$P(^DGPM(+Y,0),U,1) | 
|---|
| 44 | .D DD^%DT | 
|---|
| 45 | .S DVBADSCH=Y | 
|---|
| 46 | .S DVBAHD22="Discharge Date: "_Y | 
|---|
| 47 | .Q | 
|---|
| 48 | K Y | 
|---|
| 49 | Q | 
|---|
| 50 | ; | 
|---|
| 51 | ACT ;sets up activity date variable | 
|---|
| 52 | S Y=DVBREQDT | 
|---|
| 53 | D DD^%DT | 
|---|
| 54 | S DVBAHD21="Activity Date: "_Y | 
|---|
| 55 | K Y | 
|---|
| 56 | Q | 
|---|
| 57 | ; | 
|---|
| 58 | DRAW ;This subroutine will draw the screen | 
|---|
| 59 | I IOST?1"C-".E W @IOF | 
|---|
| 60 | W "Information Request Form" | 
|---|
| 61 | W ?35,HNAME | 
|---|
| 62 | W ?59,DVBATDT | 
|---|
| 63 | W !,DVBALN | 
|---|
| 64 | W !,"Patient: " | 
|---|
| 65 | W PNAM | 
|---|
| 66 | W ?54,"SSN: " | 
|---|
| 67 | W SSN | 
|---|
| 68 | W !,"Claim #: ",CNUM,! | 
|---|
| 69 | W DVBAHD21 | 
|---|
| 70 | W:$D(DVBAHD22) ?40,DVBAHD22 | 
|---|
| 71 | W !!,?9,"Report",?37,"Selected",?60,"Status" | 
|---|
| 72 | W !,DVBALN | 
|---|
| 73 | F DVBAX=0:0 S DVBAX=$O(DVBARPT(DVBAX)) Q:'DVBAX  D DRAW1 | 
|---|
| 74 | W !,DVBALN | 
|---|
| 75 | Q | 
|---|
| 76 | ; | 
|---|
| 77 | DRAW1 ;rights the reports to the screen | 
|---|
| 78 | W !,DVBAX | 
|---|
| 79 | W ?3,$P(DVBARPT(DVBAX),U,1) | 
|---|
| 80 | W ?40,$S($P(DVBARPT(DVBAX),U,2)["Y":"YES",1:"NO") | 
|---|
| 81 | W ?60,$S($P(DVBARPT(DVBAX),U,3)="C":"Completed",$P(DVBARPT(DVBAX),U,3)="P":"Pending",1:"") | 
|---|
| 82 | Q | 
|---|
| 83 | ; | 
|---|
| 84 | READ ;reads the user answer | 
|---|
| 85 | S DIR(0)="LAO^1:10^K:X[""."" X" | 
|---|
| 86 | S DIR("A")="Select Report: " | 
|---|
| 87 | S DIR("?",1)="Select a number or range of numbers from 1 to 10 (1,3,5 or 2-4,8).  This will" | 
|---|
| 88 | S DIR("?",2)="initially mark the report as 'YES'.  If the number is selected again then it" | 
|---|
| 89 | S DIR("?")="will be changed to 'NO' or vice versa" | 
|---|
| 90 | D ^DIR | 
|---|
| 91 | I $D(DUOUT)!($D(DTOUT)) Q | 
|---|
| 92 | I 'Y S DVBAOUT=1 | 
|---|
| 93 | Q | 
|---|
| 94 | ; | 
|---|
| 95 | ADJ ;This subroutine adjusts the local array | 
|---|
| 96 | K DVBAER | 
|---|
| 97 | N X,A,FLOP | 
|---|
| 98 | F X=1:1:10 S A=$P(Y,",",X) Q:'A  D DISC | 
|---|
| 99 | Q | 
|---|
| 100 | ; | 
|---|
| 101 | DISC ;checks for bad answers | 
|---|
| 102 | I $D(ADMNUM),$D(DVBADSCH),A=1 DO:'$D(DVBAER)  S DVBAER=1 Q | 
|---|
| 103 | .W *7,!,"Vet already discharged - you cannot request Notice of Discharge." | 
|---|
| 104 | .W !,?30,"<Return> to continue." | 
|---|
| 105 | .R Z:DTIME | 
|---|
| 106 | .Q | 
|---|
| 107 | I DVBDOC="L",(A=1!(A=2)!(A=3)!(A=9)) DO:'$D(DVBAER)  S DVBAER=1 Q | 
|---|
| 108 | .W *7,!,"Cannot select 'Notice of Discharge', 'Hospital Summary', 'Certificate (21-day)', or 'Admission Report' for an activity date." | 
|---|
| 109 | . W !,?30,"<Return> to continue." | 
|---|
| 110 | .R Z:DTIME | 
|---|
| 111 | .Q | 
|---|
| 112 | ; | 
|---|
| 113 | ;If Notice of Discharge selected, check patient's Claim Folder Location. | 
|---|
| 114 | I A=1 S FLOP=0 D  Q:FLOP | 
|---|
| 115 | . N CK S CK=$$CKCFLOC() | 
|---|
| 116 | . I CK=1 S FLOP=1 W *7,!,"The patient has no Claim Folder Location in the Patient File.",!,"Notice of Discharge would not be returned.",!,?30,"<Return> to continue." R Z:DTIME | 
|---|
| 117 | . I CK=2 S FLOP=1 D | 
|---|
| 118 | .. W *7,!,"The patient's Claim Folder Location has no Station Number in file #4.",!,"Notice of Discharge would not be returned.",!,"Please check the Claim Folder Location and its entry in file #4.",!,?30,"<Return> to continue." R Z:DTIME | 
|---|
| 119 | ; | 
|---|
| 120 | ;If 21 Day Certificate selected, check patient's Claim Folder Location. | 
|---|
| 121 | I A=3 S FLOP=0 D  Q:FLOP | 
|---|
| 122 | . N CK S CK=$$CKCFLOC() | 
|---|
| 123 | . I CK=1 S FLOP=1 W *7,!,"The patient has no Claim Folder Location in the Patient File.",!,"21 Day Certificate would not be returned.",!,?30,"<Return> to continue." R Z:DTIME | 
|---|
| 124 | . I CK=2 S FLOP=1 D | 
|---|
| 125 | .. W *7,!,"The patient's Claim Folder Location has no Station Number in file #4.",!,"21 Day Certificate would not be returned.",!,"Please check the Claim Folder Location and its entry in file #4.",!,?30,"<Return> to continue." R Z:DTIME | 
|---|
| 126 | D CHNG | 
|---|
| 127 | Q | 
|---|
| 128 | ; | 
|---|
| 129 | CKCFLOC() ;Check if Claim Folder Location or its Station Number is null. | 
|---|
| 130 | ;If Claim Folder Location and Station Number are not null, CK=0. | 
|---|
| 131 | ;If Claim Folder Location is null, CK=1. | 
|---|
| 132 | ;If Station Number is null, CK=2. | 
|---|
| 133 | N CK,ZDFN,ZCFLOC | 
|---|
| 134 | S CK=0 | 
|---|
| 135 | S ZDFN=$P($G(DFN),U) I $G(ZDFN)="" S CK=3 Q CK | 
|---|
| 136 | S ZCFLOC=$P($G(^DPT(ZDFN,.31)),U,4) | 
|---|
| 137 | I $G(ZCFLOC)="" S CK=1 | 
|---|
| 138 | I $G(ZCFLOC)'="" S:$P($G(^DIC(4,ZCFLOC,99)),U)="" CK=2 | 
|---|
| 139 | Q CK | 
|---|
| 140 | ; | 
|---|
| 141 | CHNG ;updates the local array | 
|---|
| 142 | Q:$P(DVBARPT(A),U,3)["C" | 
|---|
| 143 | S DVBAOLD=$P(DVBARPT(A),U,2) | 
|---|
| 144 | S DVBAOLD=$S(DVBAOLD["Y":"NO",1:"YES") | 
|---|
| 145 | S $P(DVBARPT(A),U,2)=DVBAOLD | 
|---|
| 146 | S $P(DVBARPT(A),U,3)=$S(DVBAOLD["Y":"P",1:"") | 
|---|
| 147 | Q | 
|---|
| 148 | ; | 
|---|
| 149 | FILE ;this subroutine sets the data into the file and asks the last three | 
|---|
| 150 | ;questions | 
|---|
| 151 | I $D(DTOUT) S DVBANY=1 D DEL^DVBAUTL3(DVBAENTR):'$D(DVBAEDT) Q | 
|---|
| 152 | I $D(DUOUT) DO  Q | 
|---|
| 153 | .I '$D(DVBAEDT) S DVBANY=1 D DEL^DVBAUTL3(DVBAENTR) Q | 
|---|
| 154 | .S DVBANY=$$ANYSEL(DVBAENTR) | 
|---|
| 155 | .I DVBANY'>0 D ERR | 
|---|
| 156 | .Q | 
|---|
| 157 | D LAST | 
|---|
| 158 | I $D(Y) I '$D(DVBAEDT) DO  Q | 
|---|
| 159 | .D DEL^DVBAUTL3(DVBAENTR) | 
|---|
| 160 | .S DVBANY=1 | 
|---|
| 161 | .Q | 
|---|
| 162 | S DVBANY=$$ANYSEL(DVBAENTR) | 
|---|
| 163 | I 'DVBANY D ERR Q | 
|---|
| 164 | D STM^DVBCUTL4 | 
|---|
| 165 | D FILE^DVBAUTL3 | 
|---|
| 166 | S XRTN=$T(+0) | 
|---|
| 167 | D SPM^DVBCUTL4 | 
|---|
| 168 | ;;;D TEST:'$D(DVBAEDT) | 
|---|
| 169 | Q | 
|---|
| 170 | ; | 
|---|
| 171 | ERR ;this subroutine will print out an error message when no reports are | 
|---|
| 172 | ;selected on the 7131. | 
|---|
| 173 | S VAR(1,0)="1,0,0,2,0^You have not selected any reports for this 7131 request" | 
|---|
| 174 | S VAR(2,0)="0,0,0,1:2,0^or have selected number 4 but not entered any remarks." | 
|---|
| 175 | D WR^DVBAUTL4("VAR") | 
|---|
| 176 | K VAR | 
|---|
| 177 | D CONTMES^DVBCUTL4 | 
|---|
| 178 | Q | 
|---|
| 179 | ; | 
|---|
| 180 | ANYSEL(B) ; | 
|---|
| 181 | ;This subroutine checks to see if any reports were selected on the 7131 | 
|---|
| 182 | ;request. | 
|---|
| 183 | ;B is the internal entry number in file 396 | 
|---|
| 184 | N X,CNT | 
|---|
| 185 | S CNT=0 | 
|---|
| 186 | F X=0:0 S X=$O(DVBARPT(X)) Q:'X!(CNT)  DO  ;checking each report | 
|---|
| 187 | . I $P(DVBARPT(X),U,2)="YES" S CNT=1 | 
|---|
| 188 | .Q | 
|---|
| 189 | I $P(^DVB(396,B,0),U,25)]"" S CNT=1 ;checking opt date range | 
|---|
| 190 | I $P(DVBARPT(4),U,2)="YES",'$O(^DVB(396,B,5,0)) S CNT=0 ;if no remarks set to zero | 
|---|
| 191 | Q CNT | 
|---|
| 192 | ; | 
|---|
| 193 | LAST ;this subroutine will ask the last three questions | 
|---|
| 194 | S DIE="^DVB(396,",DA=DVBAENTR | 
|---|
| 195 | S DR="18;S X=X;19///^S X=$S($P(^DVB(396,DA,0),U,25)']"""":""@"",$P(^(0),U,26)=""C"":""C"",1:""P"");29Routing Location;.5;23///"_DT_";24///"_DT_";27///"_LOC_";28///"_OPER | 
|---|
| 196 | D ^DIE | 
|---|
| 197 | Q | 
|---|
| 198 | ; | 
|---|
| 199 | TEST ;tests to see if the user wants this 7131 | 
|---|
| 200 | D DRAW | 
|---|
| 201 | W !,*7,"Do you want to file this request" | 
|---|
| 202 | S %=1 D YN^DICN | 
|---|
| 203 | I %=2 D DEL^DVBAUTL3(DVBAENTR) | 
|---|
| 204 | Q | 
|---|