| [613] | 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
 | 
|---|