| [613] | 1 | SD53P491        ;ALB/ESW - SD*5.3*491 POST INIT; Oct 04, 2006 ; 10/23/06 5:40pm  ; Compiled June 17, 2008 10:41:32 | 
|---|
|  | 2 | ;;5.3;SCHEDULING;**491**;AUG 13, 1993;Build 53 | 
|---|
|  | 3 | ;Remove trigger - field .01 in the SD WL CLINIC LOCATION file (# 409.32) | 
|---|
|  | 4 | ;Verify setup of Billable Appointment type: ein=11 - SC | 
|---|
|  | 5 | ;Update encounters with Appointment Type matching the SC set up on the encounter level | 
|---|
|  | 6 | ;Update file 409.32 and 409.3 with proper institution set up | 
|---|
|  | 7 | ;Retransmission of updated encounters has been disabled | 
|---|
|  | 8 | Q | 
|---|
|  | 9 | ; | 
|---|
|  | 10 | POST    ; | 
|---|
|  | 11 | N SDA | 
|---|
|  | 12 | S SDA(1)="",SDA(2)="    SD*5.3*491 Post-Install .....",SDA(3)="" D ATADDQ | 
|---|
|  | 13 | N SDA | 
|---|
|  | 14 | S SDA(1)="",SDA(2)=" Deleting cross-reference definition - trigger of the CLINIC field" | 
|---|
|  | 15 | S SDA(3)=" in the SD WL CLINIC LOCATION file (# 409.32)",SDA(4)="" | 
|---|
|  | 16 | D DELIX^DDMOD(409.32,.01,2,"K") D ATADDQ | 
|---|
|  | 17 | ; | 
|---|
|  | 18 | D ATADD ; Verify Billable Appointment Type: ien=11 | 
|---|
|  | 19 | ;  ^IBE(352.1,11,0)=11^11^2880101^0^1^1 | 
|---|
|  | 20 | S SDA(1)="",SDA(2)="  SD*5.3*491 SC Billable Appointment Type error checking is complete",SDA(3)="" D ATADDQ | 
|---|
|  | 21 | N SDA | 
|---|
|  | 22 | S SDA(1)="",SDA(2)="Starting Appointment Type verification for Outpatient Encounter file entries",SDA(3)="with encounter-level Service Connection for encounter entries created",SDA(4)="Jan 20, 2006 or later",SDA(5)="" D ATADDQ | 
|---|
|  | 23 | ; | 
|---|
|  | 24 | D CHKSC | 
|---|
|  | 25 | N SDA | 
|---|
|  | 26 | S SDA(1)="",SDA(2)="Appointment Type correction to file 409.68 and to sub-file 2.98 finished.",SDA(3)="" D ATADDQ | 
|---|
|  | 27 | ; | 
|---|
|  | 28 | N SDA | 
|---|
|  | 29 | S SDA(1)="",SDA(2)="Checking file 409.32 and 409.3 for valid national institutions, and pointers",SDA(3)="that don't match institutions of the Medical Center Division of their related",SDA(4)="Hospital Location",SDA(5)="" D ATADDQ | 
|---|
|  | 30 | N INERROR,SDWLSC,SDX,CNT S INERROR="" | 
|---|
|  | 31 | S SDX(1)="Checking file 409.32 and 409.3 for valid national institutions, and pointers" | 
|---|
|  | 32 | S SDX(2)="that don't match institutions of the Medical Center Division of their related" | 
|---|
|  | 33 | S SDX(3)="Hospital Location" | 
|---|
|  | 34 | S SDX(4)="",CNT=4 S SDWLSC=0 F  S SDWLSC=$O(^SDWL(409.32,SDWLSC)) Q:'SDWLSC  D UPDINS(SDWLSC,.CNT,.INERROR) | 
|---|
|  | 35 | D MSGG(.SDX) | 
|---|
|  | 36 | Q:INERROR | 
|---|
|  | 37 | N DIK S DIK="SDWL(409.32," D IXALL^DIK | 
|---|
|  | 38 | N SDA | 
|---|
|  | 39 | S SDA(1)="",SDA(2)="Verification and update of files 409.32 and 409.3",SDA(3)=" with proper institution finished.",SDA(4)="",SDA(5)="   SD*5.3*491 Post-Install finished...." | 
|---|
|  | 40 | D ATADDQ | 
|---|
|  | 41 | Q | 
|---|
|  | 42 | ; | 
|---|
|  | 43 | ATADD   ; New Billable Appointment Type (352.1) to correspond to the New 'SERVICE CONNECTED' Appointment Type (409.1) | 
|---|
|  | 44 | N DD,DO,DLAYGO,DINUM,DIC,DIE,DA,DR,X,Y,SDA,IBFOUND,SDATFN,IBNUM,SDAT,IBFN | 
|---|
|  | 45 | S SDA(1)="      >> Verifying 'Service Connected' Billable Appointment Type (#352.1)" | 
|---|
|  | 46 | S (SDATFN,IBNUM)=11,SDAT="SERVICE CONNECTED" | 
|---|
|  | 47 | S IBFOUND=$G(^IBE(352.1,SDATFN,0)) ; new IA confirmed to be created | 
|---|
|  | 48 | I IBFOUND="11^11^2880101^0^1^1" D  D ATADDQ Q | 
|---|
|  | 49 | .D MSG("    Done.  Billable Appointment Type Service Connected is set up properly") | 
|---|
|  | 50 | D MSG(" "),MSG("* ERROR IN CONFIGURATION OF ENTRY IEN=11 IN FILE 352.1 *") | 
|---|
|  | 51 | D MSG("IT IS MANDATORY THAT YOU CREATE AN INTEGRATED BILLING REMEDY TICKET"),MSG("Entry 11 should be configured for the SERVICE CONNECTED appointment type.") | 
|---|
|  | 52 | D MSG(" --------------------------") D ATADDQ | 
|---|
|  | 53 | Q | 
|---|
|  | 54 | ATADDQ  D MES^XPDUTL(.SDA) K SDA | 
|---|
|  | 55 | Q | 
|---|
|  | 56 | CHKSC   ;Match SC encounter value with proper Appointment Type. | 
|---|
|  | 57 | ; look for encounters only | 
|---|
|  | 58 | N SCE,CNT,CNTA S CNT=0,CNTA=0 | 
|---|
|  | 59 | ;SCE - EIN of Outpatient Encounter | 
|---|
|  | 60 | K ^XTMP("SD53P491-"_$J),^XTMP("SD53P491AP-"_$J) | 
|---|
|  | 61 | S ^XTMP("SD53P491-"_$J,0)=$$FMADD^XLFDT(""_DT_"",7)_U_DT | 
|---|
|  | 62 | S ^XTMP("SD53P491AP-"_$J,0)=$$FMADD^XLFDT(""_DT_"",7)_U_DT | 
|---|
|  | 63 | S SCE=0 | 
|---|
|  | 64 | F  S SCE=$O(^SCE(SCE)) Q:SCE'>0  I $P($G(^SCE(SCE,"USER")),U,4)>3060120  D | 
|---|
|  | 65 | .N STR,SDSCV,SDT,SDVST,DFN,SDAPDF,SDVSCL S STR=$G(^SCE(SCE,0)) | 
|---|
|  | 66 | .S DFN=$P(STR,U,2),SDT=+STR,SDVSCL=$P(STR,U,4) | 
|---|
|  | 67 | .S SDVST=$P($G(STR),U,5) | 
|---|
|  | 68 | .Q:'SDVST  Q:'$D(^AUPNVSIT(SDVST,800)) | 
|---|
|  | 69 | .S SDSCV=$$GET1^DIQ(9000010,SDVST_",",80001,"I") ;SC flag in Visit file | 
|---|
|  | 70 | .Q:SDSCV=""  ;do not proceed if SC not determined | 
|---|
|  | 71 | .S SDAPDF=$$GET1^DIQ(44,SDVSCL_",",2507,"I") ;default appt type | 
|---|
|  | 72 | .I SDAPDF'="" S SDAPDPT=SDAPDF ; set to default if exists for this clinic | 
|---|
|  | 73 | .E  S SDAPDPT=9 ; set to regular | 
|---|
|  | 74 | .N UPDAP I SDSCV S UPDAP=11 | 
|---|
|  | 75 | .E  S UPDAP=SDAPDPT | 
|---|
|  | 76 | .N SDR D APPT(DFN,SDT,SCE,UPDAP,.SDR) | 
|---|
|  | 77 | .I $P(^SCE(SCE,0),U,10)=11 D  ; change only if original appt type was SC | 
|---|
|  | 78 | ..Q:SDSCV | 
|---|
|  | 79 | ..M ^XTMP("SD53P491-"_$J,DFN,SDT,SCE)=^SCE(SCE,0) S CNT=CNT+1 | 
|---|
|  | 80 | ..S $P(^SCE(SCE,0),U,10)=SDAPDPT | 
|---|
|  | 81 | ..;I 'SDR D RETR(SCE) | 
|---|
|  | 82 | .E  D | 
|---|
|  | 83 | ..Q:'SDSCV | 
|---|
|  | 84 | ..; change only if original appt type was SC | 
|---|
|  | 85 | ..M ^XTMP("SD53P491-"_$J,DFN,SDT,SCE)=^SCE(SCE,0) S CNT=CNT+1 | 
|---|
|  | 86 | ..S $P(^SCE(SCE,0),U,10)=11 | 
|---|
|  | 87 | ..;I 'SDR D RETR(SCE) | 
|---|
|  | 88 | .D CRST(SDVST,SDSCV,SDAPDPT,.CNT) | 
|---|
|  | 89 | N SDA | 
|---|
|  | 90 | S SDA(1)="",SDA(2)="  "_CNT_" OUTPATIENT ENCOUNTER entry(ies) updated with an Appointment Type." | 
|---|
|  | 91 | S SDA(3)="  "_CNTA_" APPOINTMENT Multiple entry(ies) in the PATIENT file updated" | 
|---|
|  | 92 | S SDA(4)="       "_"with an Appointment Type." | 
|---|
|  | 93 | S SDA(5)="" | 
|---|
|  | 94 | D ATADDQ | 
|---|
|  | 95 | Q | 
|---|
|  | 96 | APPT(DFN,SDT,SCE,UPDAP,SDR)     ;update appointment multiple in Patient file | 
|---|
|  | 97 | N STR S STR=$G(^DPT(DFN,"S",SDT,0)) | 
|---|
|  | 98 | S SDR=0 | 
|---|
|  | 99 | I $P(STR,U,20)'=SCE Q | 
|---|
|  | 100 | I $P(STR,U,16)'=UPDAP D | 
|---|
|  | 101 | .M ^XTMP("SD53P491AP-"_$J,DFN,SDT,SCE)=STR | 
|---|
|  | 102 | .S $P(^DPT(DFN,"S",SDT,0),U,16)=UPDAP | 
|---|
|  | 103 | .S CNTA=CNTA+1,SDR=1 | 
|---|
|  | 104 | .;I SDR D RETR(SCE) | 
|---|
|  | 105 | Q | 
|---|
|  | 106 | RETR(SCE)       ; mark encounter for retransmission | 
|---|
|  | 107 | N SDXM | 
|---|
|  | 108 | S SDXM=$$FINDXMIT^SCDXFU01(SCE) | 
|---|
|  | 109 | D STREEVNT^SCDXFU01(SDXM,2) | 
|---|
|  | 110 | D XMITFLAG^SCDXFU01(SDXM) | 
|---|
|  | 111 | Q | 
|---|
|  | 112 | MSG(X)  ; | 
|---|
|  | 113 | N SDX S SDX=$O(SDA(999999),-1) S:'SDX SDX=1 S SDX=SDX+1 | 
|---|
|  | 114 | S SDA(SDX)=$G(X) | 
|---|
|  | 115 | Q | 
|---|
|  | 116 | CRST(SDVST,SDSCV,SDAPDPT,CNT)   ;check for credit stop encounter for each scanned encounter | 
|---|
|  | 117 | N SDVSTS,SDE S SDE="" S SDVSTS=$O(^AUPNVSIT("AD",SDVST,"")) ; only one child visit | 
|---|
|  | 118 | I SDVSTS>0 S SDE=$O(^SCE("AVSIT",SDVSTS,"")) | 
|---|
|  | 119 | Q:'SDE | 
|---|
|  | 120 | I SDSCV D | 
|---|
|  | 121 | .I $P(^SCE(SDE,0),U,10)'=11 D | 
|---|
|  | 122 | ..M ^XTMP("SD53P491-"_$J,DFN,SDT,SDE,1)=^SCE(SDE,0) S CNT=CNT+1 | 
|---|
|  | 123 | ..S $P(^SCE(SDE,0),U,10)=11 | 
|---|
|  | 124 | ..;D RETR(SDE) | 
|---|
|  | 125 | I 'SDSCV D | 
|---|
|  | 126 | .I $P(^SCE(SDE,0),U,10)=11 D | 
|---|
|  | 127 | ..M ^XTMP("SD53P491-"_$J,DFN,SDT,SDE,1)=^SCE(SDE,0) S CNT=CNT+1 | 
|---|
|  | 128 | ..S $P(^SCE(SDE,0),U,10)=SDAPDPT | 
|---|
|  | 129 | ..;D RETR(SDE) | 
|---|
|  | 130 | Q | 
|---|
|  | 131 | UPDINS(SDWLSC,CNT,INERROR)      ; update 409.32 and the related entries in 409.3 | 
|---|
|  | 132 | N SDWLINS S SDWLINS=$$GET1^DIQ(409.32,SDWLSC_",",.02,"I") ; current set up IN 409.32 | 
|---|
|  | 133 | ;check set up in file 44 | 
|---|
|  | 134 | ;get clinic | 
|---|
|  | 135 | N CL,CLN S CL=$$GET1^DIQ(409.32,SDWLSC_",",.01,"I"),CLN=$$GET1^DIQ(44,CL_",",.01) | 
|---|
|  | 136 | N STR,SDWMES S SDWMES="",STR=$$CLIN^SDWLPE(CL) | 
|---|
|  | 137 | S SDWMES=SDWMES_$P(STR,U,6) | 
|---|
|  | 138 | I $P(STR,U,5)="L" S CNT=CNT+1 S (SDWMES,SDX(CNT))=SDWMES_" - Local Institution assigned to clinic. " | 
|---|
|  | 139 | I SDWMES'="" D  Q | 
|---|
|  | 140 | .S CNT=CNT+1,SDX(CNT)=" ** Invalid configuration of Clinic "_CLN_" ("_CL_")"_": **" | 
|---|
|  | 141 | .W !!,SDX(CNT) | 
|---|
|  | 142 | .S CNT=CNT+1,SDX(CNT)=SDWMES | 
|---|
|  | 143 | .W !,SDX(CNT) | 
|---|
|  | 144 | .S CNT=CNT+1,SDX(CNT)="YOU MUST UPDATE THIS FILE 44 ENTRY'S DIVISION OR ITS MEDICAL CENTER DIVISION'S" | 
|---|
|  | 145 | .W !,SDX(CNT) | 
|---|
|  | 146 | .S CNT=CNT+1,SDX(CNT)="INSTITUTION FILE POINTER." | 
|---|
|  | 147 | .W !,SDX(CNT) | 
|---|
|  | 148 | .S CNT=CNT+1,SDX(CNT)="" | 
|---|
|  | 149 | .S:INERROR="" INERROR=1 Q | 
|---|
|  | 150 | I +STR'=SDWLINS D | 
|---|
|  | 151 | .S CNT=CNT+1,SDX(CNT)="The Medical Center Division for file 44 Clinic "_CLN_" ("_CL_")" | 
|---|
|  | 152 | .W !!,SDX(CNT) | 
|---|
|  | 153 | .S CNT=CNT+1,SDX(CNT)="has a different Institution  than the file 409.32 entry for EWL." | 
|---|
|  | 154 | .W !,SDX(CNT) | 
|---|
|  | 155 | .N SDI,SDI1 S SDI=$$GET1^DIQ(4,SDWLINS_",",.01),SDI1=$$GET1^DIQ(4,SDWLINS_",",99) | 
|---|
|  | 156 | .S CNT=CNT+1,SDX(CNT)="EWL Clinic INSTITUTION: "_SDI_" - "_SDI1 | 
|---|
|  | 157 | .W !,SDX(CNT) | 
|---|
|  | 158 | .S CNT=CNT+1,SDX(CNT)="Clinic INSTITUTION: "_$P(STR,U,3)_" - "_$P(STR,U,2) | 
|---|
|  | 159 | .W !,SDX(CNT) | 
|---|
|  | 160 | .N DIE,DR,DA S DR=".02////^S X=+STR",DIE="^SDWL(409.32,",DA=SDWLSC | 
|---|
|  | 161 | .L +^SDWL(409.32,DA):0 I '$T S CNT=CNT+1,SDX(CNT)="Entry locked; Run SD WAIT LIST CLEANUP later" W !?5,SDX(CNT) Q | 
|---|
|  | 162 | .D ^DIE L -^SDWL(409.32,DA) | 
|---|
|  | 163 | .S CNT=CNT+1,SDX(CNT)="Updated EWL Clinic to match." | 
|---|
|  | 164 | .W !,SDX(CNT),! | 
|---|
|  | 165 | .S CNT=CNT+1,SDX(CNT)="" | 
|---|
|  | 166 | .;loop to update EWL entries in FILE 409.3 if any | 
|---|
|  | 167 | .N SCL,DA,DR,CNT1 S SCL="",CNT1=0 F  S SCL=$O(^SDWL(409.3,"SC",CL,SCL)) Q:SCL'>0  D | 
|---|
|  | 168 | ..I '$D(^SDWL(409.3,SCL,0)) K ^SDWL(409.3,"SC",CL,SCL) Q | 
|---|
|  | 169 | ..S DR="2////^S X=+STR",DIE="^SDWL(409.3,",DA=SCL | 
|---|
|  | 170 | ..L +^SDWL(409.3,SCL):0 I '$T S CNT=CNT+1,SDX(CNT)="Entry locked; Run SD WAIT LIST CLEANUP later" W !?5,SDX(CNT),! Q | 
|---|
|  | 171 | ..D ^DIE L -^SDWL(409.3,SCL) S CNT1=CNT1+1 | 
|---|
|  | 172 | .I CNT1>0 W !,CNT1_" wait list entry(ies) for "_CLN_" clinic updated in SD WAIT LIST file #409.3." S CNT=CNT+1,SDX(CNT)="" | 
|---|
|  | 173 | N DA I $$GET1^DIQ(409.32,SDWLSC_",",3,"I")="" I $$GET1^DIQ(409.32,SDWLSC_",",1,"I")'>0 D | 
|---|
|  | 174 | .S DA=SDWLSC L +^SDWL(409.32,SDWLSC):0 I '$T S CNT=CNT+1,SDX(CNT)="Entry locked; Run SD WAIT LIST CLEANUP later" W !?5,SDX(CNT) Q | 
|---|
|  | 175 | .S DR="1////^S X=DT;2////^S X=DUZ",DIE="^SDWL(409.32," ;enter activation date and user | 
|---|
|  | 176 | .D ^DIE L -^SDWL(409.32,SDWLSC) | 
|---|
|  | 177 | .S CNT=CNT+1,SDX(CNT)="EWL Clinic entry for "_CLN_" updated with today's activation date." | 
|---|
|  | 178 | .W !,SDX(CNT) | 
|---|
|  | 179 | .S CNT=CNT+1,SDX(CNT)="" | 
|---|
|  | 180 | Q | 
|---|
|  | 181 | MSGG(SDX)       ;send message | 
|---|
|  | 182 | N SDAMX,XMSUB,XMY,XMTEXT,XMDUZ,DIFROM | 
|---|
|  | 183 | S XMSUB="PATCH SD*5.3*491 POST-INSTALL: UPDATE FILES 409.3 and 409.32" | 
|---|
|  | 184 | S XMY("G.SD EWL BACKGROUND UPDATE")="" | 
|---|
|  | 185 | S XMY(DUZ)="" | 
|---|
|  | 186 | S XMTEXT="SDX(" | 
|---|
|  | 187 | S CNT=$O(SDX(""),-1) | 
|---|
|  | 188 | S CNT=CNT+1,SDX(CNT)="" | 
|---|
|  | 189 | S CNT=CNT+1,SDX(CNT)="SD WL CLINIC LOCATION file update is finished." | 
|---|
|  | 190 | W !!,SDX(CNT) | 
|---|
|  | 191 | S CNT=CNT+1,SDX(CNT)="Open EWL entries in the SD WAIT LIST file have also been updated." | 
|---|
|  | 192 | W !,SDX(CNT) | 
|---|
|  | 193 | S CNT=CNT+1,SDX(CNT)="If invalid/local Institution pointers were indicated above for" | 
|---|
|  | 194 | W !!,SDX(CNT) | 
|---|
|  | 195 | S CNT=CNT+1,SDX(CNT)="Hospital Location file #44, correct the DIVISION on those clinics" | 
|---|
|  | 196 | W !,SDX(CNT) | 
|---|
|  | 197 | S CNT=CNT+1,SDX(CNT)="and/or the INSTITUTION FILE POINTER of the Medical Center Division" | 
|---|
|  | 198 | W !,SDX(CNT) | 
|---|
|  | 199 | S CNT=CNT+1,SDX(CNT)="that the clinic points to, then run option SD WAIT LIST CLEANUP" | 
|---|
|  | 200 | W !,SDX(CNT) | 
|---|
|  | 201 | S CNT=CNT+1,SDX(CNT)="which will update institutions in EWL files 409.32 and 409.3." | 
|---|
|  | 202 | W !,SDX(CNT) | 
|---|
|  | 203 | S CNT=CNT+1,SDX(CNT)="" | 
|---|
|  | 204 | W !,SDX(CNT) | 
|---|
|  | 205 | S CNT=CNT+1,SDX(CNT)="NOTE: SD WAIT LIST CLEANUP must be run any time corrections are made to" | 
|---|
|  | 206 | W !,SDX(CNT) | 
|---|
|  | 207 | S CNT=CNT+1,SDX(CNT)="a Hospital Location file #44 entry's DIVISION or to an INSTITUTION FILE POINTER" | 
|---|
|  | 208 | W !,SDX(CNT) | 
|---|
|  | 209 | S CNT=CNT+1,SDX(CNT)="in the Medical Center division file #40.8." | 
|---|
|  | 210 | W !,SDX(CNT) | 
|---|
|  | 211 | D ^XMD | 
|---|