[613] | 1 | ECMLMF ;ALB/ESD - File Multiple Dates/Multiple Procedures - 29 AUG 97 08:51
|
---|
| 2 | ;;2.0; EVENT CAPTURE ;**5,10,15,13,17,18,23,42,54,72**;8 May 96
|
---|
| 3 | ;
|
---|
| 4 | EN ;- Entry point to file selected patients and procedures
|
---|
| 5 | ;
|
---|
| 6 | N DIR,DIRUT,I,J,Y,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE
|
---|
| 7 | I '$D(^TMP("ECMPIDX",$J))!('$D(^TMP("ECMPTIDX",$J))) W !!,*7,"No patient data found. No patient record(s) have been filed." D MSG G ENQ
|
---|
| 8 | ;
|
---|
| 9 | W !!,"You have selected the following patients for filing:",!
|
---|
| 10 | ;
|
---|
| 11 | ;- List patients
|
---|
| 12 | S I=0
|
---|
| 13 | F S I=$O(^TMP("ECMPTIDX",$J,I)) Q:'I D
|
---|
| 14 | . W !?5,I_". ",$P($G(^TMP("ECMPTIDX",$J,I)),"^",3)
|
---|
| 15 | W !! S DIR(0)="YA",DIR("A")="Is this correct? ",DIR("B")="YES"
|
---|
| 16 | S DIR("?")="Answer YES to continue, NO to exit."
|
---|
| 17 | D ^DIR K DIR
|
---|
| 18 | I '$G(Y)!($D(DIRUT)) W !,"Exiting option...no patients filed.",! D MSG G ENQ
|
---|
| 19 | ;
|
---|
| 20 | ;- Task job
|
---|
| 21 | F J="DUZ","ECL","ECDSSU","ECCAT","ECU*" S ZTSAVE(J)=""
|
---|
| 22 | S ZTSAVE("^TMP(""ECMPIDX"",$J,")="",ZTSAVE("^TMP(""ECMPTIDX"",$J,")=""
|
---|
| 23 | S ZTIO="",ZTDESC="EC MULT DATES/MULT PROCS DATA ENTRY",ZTRTN="GETNODS^ECMLMF",ZTDTH=$H
|
---|
| 24 | ;
|
---|
| 25 | W !!,"These patients will be sent to the background for filing.",!
|
---|
| 26 | D ^%ZTLOAD
|
---|
| 27 | I $D(ZTSK) W !,"Queued as Task #",ZTSK,!
|
---|
| 28 | D MSG
|
---|
| 29 | ;
|
---|
| 30 | ENQ K ^TMP("ECPLST",$J)
|
---|
| 31 | Q
|
---|
| 32 | ;
|
---|
| 33 | ;
|
---|
| 34 | GETNODS ;- Get procedure node and patient node for processing
|
---|
| 35 | ;
|
---|
| 36 | N ECI,ECJ,ECPRNOD,ECPTNOD,ECDXX
|
---|
| 37 | S (ECI,ECJ)=0
|
---|
| 38 | F S ECI=$O(^TMP("ECMPTIDX",$J,ECI)) Q:'ECI D
|
---|
| 39 | . S ECPTNOD="",ECPTNOD=$G(^TMP("ECMPTIDX",$J,ECI))
|
---|
| 40 | . K ECDXX M ECDXX=^TMP("ECMPTIDX",$J,ECI,"DXS")
|
---|
| 41 | . F S ECJ=$O(^TMP("ECMPIDX",$J,ECJ)) Q:'ECJ D
|
---|
| 42 | .. S ECPRNOD="",ECPRNOD=$G(^TMP("ECMPIDX",$J,ECJ))
|
---|
| 43 | .. D FILREC
|
---|
| 44 | D ENQ^ECMLMD
|
---|
| 45 | S ZTREQ="@"
|
---|
| 46 | Q
|
---|
| 47 | ;
|
---|
| 48 | ;
|
---|
| 49 | FILREC ;- Create record in #721 and file fields
|
---|
| 50 | ;
|
---|
| 51 | N DA,ECIEN,ECNOGO,ECPRR,ECPTR,ECREAS,ECSND,DIC,DLAYGO,DIE,DR,I,Y
|
---|
| 52 | S ECNOGO=0
|
---|
| 53 | S I=$P(^ECH(0),"^",3)
|
---|
| 54 | LOCKHD S I=I+1 L +^ECH(I):2 I '$T!$D(^ECH(I)) L -^ECH(I) G LOCKHD
|
---|
| 55 | L -^ECH(0)
|
---|
| 56 | K DD,DO S X=I,DIC(0)="L",DLAYGO=721,DIC="^ECH(" D FILE^DICN
|
---|
| 57 | K DIC,DLAYGO,X
|
---|
| 58 | I Y=-1 G FILRECQ
|
---|
| 59 | S (ECIEN,DA)=+Y
|
---|
| 60 | L +^ECH(ECIEN):2 I '$T G FILRECQ
|
---|
| 61 | ;
|
---|
| 62 | D SETARRY
|
---|
| 63 | ;
|
---|
| 64 | ;- File zero node and "P" node
|
---|
| 65 | S DIE="^ECH(",DR="[EC CREATE PATIENT ENTRY]" D ^DIE K DR
|
---|
| 66 | ;
|
---|
| 67 | ;- File multiple providers, ALB/JAM
|
---|
| 68 | S ECFIL=$$FILPRV^ECPRVMUT(ECIEN,.ECU,.ECOUT) K ECFIL
|
---|
| 69 | ;- File secondary diagnoses codes, ALB/JAM
|
---|
| 70 | S (DXS,DXSIEN)=""
|
---|
| 71 | F S DXS=$O(ECDXX(DXS)) Q:DXS="" D
|
---|
| 72 | . S DXSIEN=+ECDXX(DXS) I DXSIEN<0 Q
|
---|
| 73 | . K DIC,DD,DO S DIC(0)="L",DA(1)=ECIEN,DIC("P")=$P(^DD(721,38,0),U,2)
|
---|
| 74 | . S X=DXSIEN,DIC="^ECH("_DA(1)_","_"""DX"""_"," D FILE^DICN
|
---|
| 75 | K DXS,DXSIEN,DIC
|
---|
| 76 | ;update encounter's procedures to have same primary & secondary dx
|
---|
| 77 | S PXUPD=$$PXUPD^ECUTL2(ECPTR("DFN"),ECPRR("PROCDT"),ECL,ECPTR("CLIN"),ECPTR("DX"),.ECDXX,ECIEN) K PXUPD
|
---|
| 78 | ;
|
---|
| 79 | ;File CPT modifiers, ALB/JAM
|
---|
| 80 | N MOD,MODIEN
|
---|
| 81 | S (ECMODS,MOD)=""
|
---|
| 82 | F S MOD=$O(^TMP("ECMPIDX",$J,ECJ,"MOD",MOD)) Q:MOD="" D
|
---|
| 83 | . S MODIEN=$P(^TMP("ECMPIDX",$J,ECJ,"MOD",MOD),U,2) I MODIEN<0 Q
|
---|
| 84 | . K DIC,DD,DO S DIC(0)="L",DA(1)=ECIEN,DIC("P")=$P(^DD(721,36,0),U,2)
|
---|
| 85 | . S X=MODIEN,DIC="^ECH("_DA(1)_","_"""MOD"""_"," D FILE^DICN
|
---|
| 86 | . S ECMODS=ECMODS_$S(ECMODS="":"",1:";")_MOD
|
---|
| 87 | ;
|
---|
| 88 | S ECSND=$P($G(^ECD(+$P($G(ECDSSU),"^"),0)),"^",14),DA=ECIEN
|
---|
| 89 | I ECSND="" S ECSND="N"
|
---|
| 90 | I ECSND="A"!((ECSND="O")&(ECPTR("IO")="O")) D
|
---|
| 91 | . S ECNOGO=$$BADFLDS(.ECREAS)
|
---|
| 92 | . I ECNOGO S DR="33////^S X=$G(ECREAS)" D ^DIE Q
|
---|
| 93 | . I 'ECNOGO D PCE
|
---|
| 94 | ;
|
---|
| 95 | FILRECQ L -^ECH(ECIEN)
|
---|
| 96 | Q
|
---|
| 97 | ;
|
---|
| 98 | ;
|
---|
| 99 | SETARRY ;- Set local arrays with procedure and patient data for filing
|
---|
| 100 | ;
|
---|
| 101 | N I
|
---|
| 102 | F I="PROCDT","PROC","REAS","VOL" S ECPRR(I)=$P(ECPRNOD,"^",+$P($T(@I),";;",2))
|
---|
| 103 | I ECPRR("REAS")=0 S ECPRR("REAS")=""
|
---|
| 104 | S I="PCEPR" S ECPRR(I)=$S($P($G(ECPRR("PROC")),";",2)="ICPT(":$P($G(ECPRR("PROC")),";"),1:$P($G(^EC(725,+$P($G(ECPRR("PROC")),";"),0)),"^",5))
|
---|
| 105 | F I="DFN","ORDSEC","IO","CLIN","DX","AO","ENV","IR","SC","ELIG","MST","HNC","CV" S ECPTR(I)=$P(ECPTNOD,"^",+$P($T(@I),";;",2))
|
---|
| 106 | Q
|
---|
| 107 | ;
|
---|
| 108 | ;
|
---|
| 109 | BADFLDS(ECRS) ; - Validation checks on fields to be set in "PCE" node
|
---|
| 110 | ;
|
---|
| 111 | S ECRS=""
|
---|
| 112 | I ECPTR("CLIN")="" S ECRS="Clinic missing;"
|
---|
| 113 | I ECPTR("CLIN")=0 S ECRS="Clinic inactive;"
|
---|
| 114 | I ECPTR("DX")="" S ECRS=$G(ECRS)_"Diagnosis missing;"
|
---|
| 115 | I ECPRR("PCEPR")="" S ECRS=$G(ECRS)_"CPT code missing;"
|
---|
| 116 | Q $S($G(ECRS)="":0,1:1)
|
---|
| 117 | ;
|
---|
| 118 | ;
|
---|
| 119 | PCE ;- More validation checks on fields to be set in "PCE" node
|
---|
| 120 | ;
|
---|
| 121 | N ECDSS,I,ECAO,ECELIG,ECEV,ECIR,ECSC,ECNP,ECNPP,ECPCENOD,ECMST,ECHNC,ECCV
|
---|
| 122 | G PCEQ:$G(ECPRR("PROCDT"))'["."!('$G(ECPRR("PCEPR")))
|
---|
| 123 | F I="DFN","CLIN","DX" G PCEQ:'$G(ECPTR(I))
|
---|
| 124 | G PCEQ:'$G(ECPRR("VOL"))
|
---|
| 125 | S ECDSS=$P($G(^ECH(ECIEN,0)),"^",20)
|
---|
| 126 | G PCEQ:'$G(ECL)!('ECDSS)!('$G(ECU(1)))
|
---|
| 127 | ;
|
---|
| 128 | S ECPTR("AO")=$G(ECPTR("AO"))
|
---|
| 129 | S ECAO=$S(ECPTR("AO")="Y":1,ECPTR("AO")="N":0,1:"")
|
---|
| 130 | ;
|
---|
| 131 | S ECPTR("ENV")=$G(ECPTR("ENV"))
|
---|
| 132 | S ECEV=$S(ECPTR("ENV")="Y":1,ECPTR("ENV")="N":0,1:"")
|
---|
| 133 | ;
|
---|
| 134 | S ECPTR("IR")=$G(ECPTR("IR"))
|
---|
| 135 | S ECIR=$S(ECPTR("IR")="Y":1,ECPTR("IR")="N":0,1:"")
|
---|
| 136 | ;
|
---|
| 137 | S ECPTR("SC")=$G(ECPTR("SC"))
|
---|
| 138 | S ECSC=$S(ECPTR("SC")="Y":1,ECPTR("SC")="N":0,1:"")
|
---|
| 139 | ;
|
---|
| 140 | S ECNPP="" I $G(ECPRR("PROC"))["EC" S ECNP=$G(^EC(725,+ECPRR("PROC"),0)),ECNPP=$P(ECNP,"^",2)_" "_$P(ECNP,"^",1)
|
---|
| 141 | ;
|
---|
| 142 | S ECELIG=$S($G(ECPTR("ELIG")):ECPTR("ELIG"),1:"")
|
---|
| 143 | ;
|
---|
| 144 | S ECPTR("MST")=$G(ECPTR("MST"))
|
---|
| 145 | S ECMST=$S(ECPTR("MST")="Y":1,ECPTR("MST")="N":0,1:"")
|
---|
| 146 | ;
|
---|
| 147 | ;JAM;09/30/02,Head/Neck Cancer
|
---|
| 148 | S ECPTR("HNC")=$G(ECPTR("HNC"))
|
---|
| 149 | S ECHNC=$S(ECPTR("HNC")="Y":1,ECPTR("HNC")="N":0,1:"")
|
---|
| 150 | ;
|
---|
| 151 | ;JAM;10/29/03,Combat Veteran
|
---|
| 152 | S ECPTR("CV")=$G(ECPTR("CV"))
|
---|
| 153 | S ECCV=$S(ECPTR("CV")="Y":1,ECPTR("CV")="N":0,1:"")
|
---|
| 154 | ;
|
---|
| 155 | ;JAM;06/01/05,Project 112/SHAD
|
---|
| 156 | ;S ECPTR("SHAD")=$G(ECPTR("SHAD"))
|
---|
| 157 | ;S ECSHAD=$S(ECPTR("SHAD")="Y":1,ECPTR("SHAD")="N":0,1:"")
|
---|
| 158 | ;- File "PCE" and "PCE1" nodes
|
---|
| 159 | ;
|
---|
| 160 | S DR="[EC FILE PCE NODE]" D ^DIE K DR
|
---|
| 161 | S DR="31////"_$$NOW^XLFDT D ^DIE
|
---|
| 162 | PCEQ Q
|
---|
| 163 | ;
|
---|
| 164 | ;
|
---|
| 165 | MSG ;- Message displayed so error message can be read on screen
|
---|
| 166 | ;
|
---|
| 167 | S DIR(0)="E" D ^DIR
|
---|
| 168 | Q
|
---|
| 169 | ;
|
---|
| 170 | ;- Subscripts used in creating ECPRR and ECPTR arrays
|
---|
| 171 | ;
|
---|
| 172 | PROCDT ;;2
|
---|
| 173 | PROC ;;3
|
---|
| 174 | REAS ;;5
|
---|
| 175 | VOL ;;7
|
---|
| 176 | ;
|
---|
| 177 | DFN ;;2
|
---|
| 178 | ORDSEC ;;4
|
---|
| 179 | IO ;;5
|
---|
| 180 | CLIN ;;6
|
---|
| 181 | DX ;;8
|
---|
| 182 | AO ;;10
|
---|
| 183 | ENV ;;11
|
---|
| 184 | IR ;;12
|
---|
| 185 | SC ;;13
|
---|
| 186 | ELIG ;;14
|
---|
| 187 | MST ;;15
|
---|
| 188 | HNC ;;16
|
---|
| 189 | CV ;;17
|
---|