1 | ECUTL2 ;ALB/JAM - Event Capture Diagnosis Code Selection ;11 Jan 2000
|
---|
2 | ;;2.0; EVENT CAPTURE ;**23,33,47,63,72**;8 May 96
|
---|
3 | DIAG ;ask dx question (primary and multiple secondary)
|
---|
4 | ;check for primary dx and display message
|
---|
5 | D PDXMSG
|
---|
6 | ;ask for primary dx
|
---|
7 | D PDX I ECOUT Q
|
---|
8 | ;ask for secondary dx
|
---|
9 | D SDX I ECOUT Q
|
---|
10 | I $D(DTOUT)!$D(DUOUT) W:$P(ECPCE,"~",2)'="N" !!,"Please note that this record cannot be sent to PCE without a diagnosis.",!!
|
---|
11 | Q
|
---|
12 | PDXMSG ; Check for existence of primary diagnoses and display message
|
---|
13 | N TXT,ECPDX
|
---|
14 | S (ECDX,ECDXN,ECDXO)="" K ECDXS
|
---|
15 | ;Check if primary dx exist in file #721
|
---|
16 | S ECPDX=$$PDXCK(ECDFN,ECDT,ECL,EC4)
|
---|
17 | I +ECPDX W ! D
|
---|
18 | . W !?5,"WARNING: Primary Diagnoses already on File for this encounter."
|
---|
19 | . W !?5,"If changed, all procedures will be updated. ("_ECDXN_")"
|
---|
20 | . S ECDXO=ECDX
|
---|
21 | I $P(ECPDX,U,2) D
|
---|
22 | . S TXT="WARNING: Primary diagnoses already sent to PCE. If changed,"
|
---|
23 | . S TXT=TXT_" all procedures"
|
---|
24 | . W !!?5,TXT
|
---|
25 | . S TXT="associated with this encounter will be updated and resent "
|
---|
26 | . S TXT=TXT_"to PCE."
|
---|
27 | . W !?5,TXT
|
---|
28 | Q
|
---|
29 | PDXCK(ECDFN,ECDTX,ECLX,EC4X) ;Get primary dx frm file #721 for pat encounter
|
---|
30 | ; Input: ECDFN = Patient ien
|
---|
31 | ; ECDTX = Date/time of procedure
|
---|
32 | ; ECLX = Location ien
|
---|
33 | ; EC4X = Clinic ien
|
---|
34 | ;
|
---|
35 | ; Output: PDXF^PCEF = primary dx flag (1/0)^dx sent to PCE flag (1/0)
|
---|
36 | ; ECDX = Primary diagnoses ien
|
---|
37 | ; ECDXN = Primary diagnoses code
|
---|
38 | ; ECDXIEN = Array of encounter IENs w primary dx
|
---|
39 | ;
|
---|
40 | N PDXF,PCEF,DA,DXIEN,DXS,DXN
|
---|
41 | S (PDXF,PCEF)=0,DA="" K ECDXIEN
|
---|
42 | I $G(ECDFN)=""!($G(ECDTX)="")!($G(ECLX)="")!($G(EC4X)="") Q PDXF_U_PCEF
|
---|
43 | I $O(^ECH("APAT",ECDFN,ECDTX,""))="" Q PDXF_U_PCEF
|
---|
44 | F S DA=$O(^ECH("APAT",ECDFN,ECDTX,DA)) Q:DA="" D
|
---|
45 | . I EC4X'=$P($G(^ECH(DA,0)),U,19) Q
|
---|
46 | . S ECDX=$P($G(^ECH(DA,"P")),U,2) I ECDX="" Q
|
---|
47 | . S ECDXN=$P($$ICDDX^ICDCODE(ECDX,ECDTX),U,2)
|
---|
48 | . S ECDXIEN(DA)=ECDXN_U_ECDX,PDXF=1
|
---|
49 | . I $D(^ECH(DA,"SEND")),^("SEND")="" S PCEF=1
|
---|
50 | . I $D(^ECH(DA,"DX")) D
|
---|
51 | . . S DXS=0 F S DXS=$O(^ECH(DA,"DX",DXS)) Q:'DXS D
|
---|
52 | ...S DXIEN=$P($G(^ECH(DA,"DX",DXS,0)),U)
|
---|
53 | ...S DXN=$P($$ICDDX^ICDCODE(DXIEN,ECDTX),U,2) S:DXN'="" ECDXS(DXN)=DXIEN
|
---|
54 | Q PDXF_U_PCEF
|
---|
55 | PDX ;Ask primary diagnoses code
|
---|
56 | ; Variables: ECDX = Primary diagnoses ien
|
---|
57 | ; ECDXN = Primary diagnoses code, default if define
|
---|
58 | ; ECOUT = Error flag (1/0)
|
---|
59 | ;
|
---|
60 | N DIC,X,Y,DTOUT,DUOUT,DEFX,ECODE,PROMPT
|
---|
61 | S ECDX=$G(ECDX),ECDXN=$G(ECDXN),PROMPT="Primary ICD-9 Code: "
|
---|
62 | S:ECDXN'="" DEFX=ECDXN
|
---|
63 | F D LEX Q:$G(ECOUT) D I $D(ECODE) Q
|
---|
64 | .I X="" W !,"This is a required response. Enter '^' to exit" Q
|
---|
65 | .S ECDXN=ECODE,ECDX=+$$ICDDX^ICDCODE(ECODE,$G(ECDT))
|
---|
66 | Q
|
---|
67 | SDX ;Ask secondary diagnoses code
|
---|
68 | ; Variables: ECDX = Primary diagnoses ien, default if define
|
---|
69 | ; ECDXN = Primary diagnoses code
|
---|
70 | ; ECOUT = Error flag (1/0)
|
---|
71 | ; ECDXS = Array with secondary diagnosis code
|
---|
72 | ; subscript=dx code and set equal to dx ien
|
---|
73 | ;
|
---|
74 | N Y,X,DEFX,DIC,DTOUT,DUOUT,ECODE
|
---|
75 | S ECOUT=$G(ECOUT),PROMPT="Secondary ICD-9 Code: "
|
---|
76 | F D LSTDXS,LEX Q:Y<0 D I ECOUT Q
|
---|
77 | .I ECODE="" Q
|
---|
78 | .I ECODE=$G(ECDXN) W " Already exist as primary dx." Q
|
---|
79 | .I $D(ECDXS(ECODE)) D DELDUP Q
|
---|
80 | .S ECDXS(ECODE)=+$$ICDDX^ICDCODE(ECODE,$G(ECDT))
|
---|
81 | Q
|
---|
82 | DELDUP ;Delete secondary diagnosis code from list
|
---|
83 | N DIR,DIRUT,DTOUT,DUOUT,DIROUT
|
---|
84 | S DIR("A")="Delete "_ECODE_" Code from List"
|
---|
85 | S DIR(0)="Y"
|
---|
86 | D ^DIR
|
---|
87 | I $D(DIRUT)!($D(DIROUT)) S ECOUT=1 Q
|
---|
88 | I Y K ECDXS(ECODE)
|
---|
89 | Q
|
---|
90 | LEX ;ICD code from LEX database
|
---|
91 | ;K X,Y
|
---|
92 | S X=$G(DEFX)
|
---|
93 | ;LEX DBIA1577
|
---|
94 | D CONFIG^LEXSET("ICD",,$G(ECDT))
|
---|
95 | S DIC="757.01",DIC(0)=$S('$L($G(X)):"A",1:"")_"EQM",DIC("A")=PROMPT
|
---|
96 | D ^DIC
|
---|
97 | I $D(DTOUT)!$D(DUOUT) S ECOUT=1 Q
|
---|
98 | I X="" Q
|
---|
99 | I Y<0 S ECOUT=1 Q
|
---|
100 | S ECODE=$G(Y(1))
|
---|
101 | Q
|
---|
102 | LSTDXS ;list icd9-code
|
---|
103 | N DXS
|
---|
104 | I $D(ECDXS) D
|
---|
105 | . W !?1,"Secondary ICD-9 code entered:"
|
---|
106 | . S DXS=""
|
---|
107 | . F S DXS=$O(ECDXS(DXS)) Q:DXS="" W !,?4,DXS,?15,$P($$ICDDX^ICDCODE(DXS,$G(ECDT)),"^",4)
|
---|
108 | Q
|
---|
109 | PXUPD(ECDFN,ECDT,ECL,EC4,ECDXP,ECDXX,ECXIEN) ; Update all associated
|
---|
110 | ; procedures for an EC Patient encounter with the same primary and
|
---|
111 | ; secondary dx codes
|
---|
112 | ;
|
---|
113 | ; Input: ECDFN = Patient ien
|
---|
114 | ; ECDT = Date/time of procedure
|
---|
115 | ; ECL = Location ien
|
---|
116 | ; EC4 = Clinic ien
|
---|
117 | ; ECDXP = Primary diagnoses code
|
---|
118 | ; ECDXX = Array of secondary diagnoses codes
|
---|
119 | ; ECXIEN = 721 ien, if define don't process
|
---|
120 | ;
|
---|
121 | ; Output: ECERR 0 - Process completed
|
---|
122 | ;
|
---|
123 | N ECIEN,ECERR,DIE,DR,DA,DTOUT,DIROUT,ECDXIEN,ECPDX,ECDX,ECDXN,DIC,X
|
---|
124 | N ECVST,ECVAR1,VALQUIET,DXN,DXSIEN,DIK,ECDXS
|
---|
125 | S ECERR=0
|
---|
126 | I $D(ECDXP)="" Q ECERR
|
---|
127 | S ECPDX=$$PDXCK(ECDFN,ECDT,ECL,EC4)
|
---|
128 | I '$D(ECDXIEN) Q ECERR
|
---|
129 | S ECIEN="",DIE="^ECH("
|
---|
130 | F S ECIEN=$O(ECDXIEN(ECIEN)) Q:ECIEN="" D
|
---|
131 | . I $G(ECXIEN)'="",ECXIEN=ECIEN Q
|
---|
132 | . S ECNODE=$G(^ECH(ECIEN,"P")) I ECNODE="" Q
|
---|
133 | . I ECDXP'=$P(ECNODE,U,2) D
|
---|
134 | . . S DA=ECIEN,DR="20////"_ECDXP D ^DIE
|
---|
135 | . . S $P(^ECH(ECIEN,"PCE"),"~",11)=ECDXP
|
---|
136 | . ;delete all secondary diagnosis codes
|
---|
137 | . S DA(1)=ECIEN,DIK="^ECH("_DA(1)_",""DX"",",DA=0
|
---|
138 | . F S DA=$O(^ECH(ECIEN,"DX",DA)) Q:'DA D ^DIK
|
---|
139 | . I $D(^ECH(ECIEN,"DX")) K ^ECH(ECIEN,"DX")
|
---|
140 | . ;update secondary diagnosis codes on procedure
|
---|
141 | . S DXN="" F S DXN=$O(ECDXX(DXN)) Q:DXN="" D
|
---|
142 | . . S DXSIEN=$P(ECDXX(DXN),U) I DXSIEN<0 Q
|
---|
143 | . . K DIC,DD,DO S DIC(0)="L",DA(1)=ECIEN,DIC("P")=$P(^DD(721,38,0),U,2)
|
---|
144 | . . S X=DXSIEN,DIC="^ECH("_DA(1)_","_"""DX"""_"," D FILE^DICN
|
---|
145 | . ;delete visit and resend to PCE
|
---|
146 | . S ECVST=+$P($G(^ECH(ECIEN,0)),"^",21) I 'ECVST Q
|
---|
147 | . ;* Prepare all EC records with same Visit file entry to resend to PCE
|
---|
148 | . S ECVAR1=$$FNDVST^ECUTL(ECVST)
|
---|
149 | . ;- Set VALQUIET to stop Amb Care validator from broadcasting to screen
|
---|
150 | . S VALQUIET=1,ECVV=$$DELVFILE^PXAPI("ALL",ECVST)
|
---|
151 | Q ECERR
|
---|