| 1 | ECEDF ;BIR/MAM,JPW-Enter Event Capture Data (cont'd) ;6 Mar 96
 | 
|---|
| 2 |  ;;2.0; EVENT CAPTURE ;**4,5,10,13,18,23,33,72**;8 May 96
 | 
|---|
| 3 | FILE ;file proc
 | 
|---|
| 4 |  L +^ECH(0) S ECRN=$P(^ECH(0),"^",3)+1 I $D(^ECH(ECRN)) S $P(^ECH(0),"^",3)=$P(^(0),"^",3)+1 L -^ECH(0) G FILE
 | 
|---|
| 5 |  L -^ECH(0) K DA,DD,DO,DIC S DIC(0)="L",DIC="^ECH(",X=ECRN D FILE^DICN K DIC S ECFN=+Y
 | 
|---|
| 6 |  ;Ask and file CPT modifiers, ALB/JAM
 | 
|---|
| 7 |  S ECCPT=$S(ECP["ICPT":+ECP,1:$P($G(^EC(725,+ECP,0)),U,5)) I ECCPT D
 | 
|---|
| 8 |  . S ECMODS=$G(ECMODS)
 | 
|---|
| 9 |  . S ECMODF=$$ASKMOD^ECUTL(ECCPT,ECMODS,ECDT,.ECMOD,.ECERR)
 | 
|---|
| 10 |  . S:$G(ECERR) ECOUT=1 K ECMODF,ECMODS I ECOUT Q
 | 
|---|
| 11 |  . S MOD="" F  S MOD=$O(ECMOD(ECCPT,MOD)) Q:MOD=""  D
 | 
|---|
| 12 |  . . S MODIEN=$P(ECMOD(ECCPT,MOD),U,2) I MODIEN<0 Q
 | 
|---|
| 13 |  . . K DIC,DD,DO S DIC(0)="L",DA(1)=ECFN,DIC("P")=$P(^DD(721,36,0),U,2)
 | 
|---|
| 14 |  . . S X=MODIEN,DIC="^ECH("_DA(1)_","_"""MOD"""_"," D FILE^DICN
 | 
|---|
| 15 |  . K MOD,MODIEN,DIC,ECMOD
 | 
|---|
| 16 |  I $G(ECOUT) K ECMODS,ECMOD,ECERR D RECDEL,MSG Q
 | 
|---|
| 17 |  S DIR("A")="Volume",DIR("B")=ECVOL,DIR(0)="N^^K:(X<1)!(X>99) X"
 | 
|---|
| 18 |  S DIR("?")="Type a Number between 1 and 99, 0 Decimal Digits"
 | 
|---|
| 19 |  D ^DIR I $D(DIRUT) K DIR D RECDEL,MSG Q
 | 
|---|
| 20 |  S ECVOL=+Y,ECNULL="" K DIR
 | 
|---|
| 21 |  K DA,DR,DIE S DIE("NO^")="OUTOK",DIE="^ECH(",DA=ECFN
 | 
|---|
| 22 |  S DR="1////"_ECDFN_";3////"_ECL_";4////"_ECS_";5////"_ECM_";6////"_ECD_";7////"_+ECC_";9////"_ECVOL_";Q;8////"_ECNULL D ^DIE K DR
 | 
|---|
| 23 |  I $D(DTOUT)!($D(Y)'=0) K DIE D RECDEL,MSG Q
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 |  ;- Default to previous ordering section if >1 procedure entered
 | 
|---|
| 26 |  S ECODFN=+$G(ECODFN)
 | 
|---|
| 27 |  S ECMN=$S((ECODFN=ECDFN)&(+$G(ECOM)):$P($G(^ECC(723,ECOM,0)),"^"),1:$P($G(^ECC(723,ECM,0)),"^"))
 | 
|---|
| 28 |  ;
 | 
|---|
| 29 |  ;- Get ordering section, and Procedure Date/Time
 | 
|---|
| 30 |  S DR="11//"_ECMN_";2////"_ECDT
 | 
|---|
| 31 |  D ^DIE K DR
 | 
|---|
| 32 |  I $D(DTOUT)!($D(Y)'=0)!($P(^ECH(ECFN,0),"^",3)="") K DIE D RECDEL,MSG Q
 | 
|---|
| 33 |  ;
 | 
|---|
| 34 |  ;- Get associated clinic
 | 
|---|
| 35 |  I $$CHKDSS^ECUTL0(+$G(ECD),ECPTSTAT) D  I +$G(ECOUT) D RECDEL,MSG Q
 | 
|---|
| 36 |  . S DR=$S(EC4N]"":"26//"_EC4N,1:"26")
 | 
|---|
| 37 |  . D ^DIE S EC4=X K DR
 | 
|---|
| 38 |  . I $D(DTOUT)!($D(Y)'=0) K DIE S ECOUT=1
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 |  ; Get primary and multiple secondary diagnosis codes, ALB/JAM
 | 
|---|
| 41 |  I $P(ECPCE,"~",2)'="N" D  I ECOUT D RECDEL,MSG Q
 | 
|---|
| 42 |  . D DIAG^ECUTL2 I ECOUT Q
 | 
|---|
| 43 |  . S DA=ECFN,DR=$S(ECDX]"":"20////"_ECDX,1:20) D ^DIE S ECDXY=X K DR
 | 
|---|
| 44 |  . S DXS="" F  S DXS=$O(ECDXS(DXS)) Q:DXS=""  D
 | 
|---|
| 45 |  . . S DXSIEN=$P(ECDXS(DXS),U) I DXSIEN<0 Q
 | 
|---|
| 46 |  . . K DIC,DD,DO S DIC(0)="L",DA(1)=ECFN,DIC("P")=$P(^DD(721,38,0),U,2)
 | 
|---|
| 47 |  . . S X=DXSIEN,DIC="^ECH("_DA(1)_","_"""DX"""_"," D FILE^DICN
 | 
|---|
| 48 |  . K ECDXX M ECDXX=ECDXS K DXS,DXSIEN,DIC,ECDXS
 | 
|---|
| 49 |  . ; Update all procedures for an encounter with same primary & second dx
 | 
|---|
| 50 |  . S PXUPD=$$PXUPD^ECUTL2(ECDFN,ECDT,ECL,EC4,ECDXY,.ECDXX,ECFN)
 | 
|---|
| 51 |  . K PXUPD,ECDXY,ECDXX
 | 
|---|
| 52 |  S DA=ECFN
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 |  ;- Determine patient eligibility
 | 
|---|
| 55 |  I $$CHKDSS^ECUTL0(+$G(ECD),ECPTSTAT) D
 | 
|---|
| 56 |  . I $$MULTELG^ECUTL0(+$G(ECDFN)) S ECELIG=+$$ELGLST^ECUTL0
 | 
|---|
| 57 |  . E  S ECELIG=+$G(VAEL(1))
 | 
|---|
| 58 |  K VAEL
 | 
|---|
| 59 |  ;
 | 
|---|
| 60 |  ;- File inpatient/outpatient status
 | 
|---|
| 61 |  S DR="29////"_ECPTSTAT
 | 
|---|
| 62 |  D ^DIE K DR
 | 
|---|
| 63 |  ;
 | 
|---|
| 64 |  ;- Ask classification questions applicable to patient and file in #721
 | 
|---|
| 65 |  I $$ASKCLASS^ECUTL1(+$G(ECDFN),.ECCLFLDS,.ECOUT,ECPCE,ECPTSTAT),($O(ECCLFLDS(""))]"") D EDCLASS^ECUTL1(ECFN,.ECCLFLDS)
 | 
|---|
| 66 |  I +$G(ECOUT) K DIE D RECDEL,MSG Q
 | 
|---|
| 67 |  K ECCLFLDS
 | 
|---|
| 68 |  ;
 | 
|---|
| 69 |  ;;get provider(s) with active person class
 | 
|---|
| 70 |  D ASKPRV^ECPRVMUT(ECFN,ECDT,.ECPRVARY,.ECOUT)
 | 
|---|
| 71 |  I +$G(ECOUT) K DIE D RECDEL,MSG Q
 | 
|---|
| 72 |  S ECFIL=$$FILPRV^ECPRVMUT(ECFN,.ECPRVARY,.ECOUT)
 | 
|---|
| 73 |  K ECFIL,ECPRVARY,ECPRV,ECPRVN
 | 
|---|
| 74 |  I +$G(ECOUT) K DIE D RECDEL,MSG Q
 | 
|---|
| 75 |  ;
 | 
|---|
| 76 |  ;- File assoc clinic from event code screen if null
 | 
|---|
| 77 |  I $P($G(^ECH(ECFN,0)),"^",19)="" D
 | 
|---|
| 78 |  . I $G(EC4)="" D GETCLN
 | 
|---|
| 79 |  . S EC4=+$G(EC4)
 | 
|---|
| 80 |  . I EC4>0 D
 | 
|---|
| 81 |  .. S DA=ECFN,DR="26////^S X=EC4"
 | 
|---|
| 82 |  .. D ^DIE K DA,DR,DIE
 | 
|---|
| 83 |  ;
 | 
|---|
| 84 |  K DA,DR,DIE,ECNULL
 | 
|---|
| 85 |  ;
 | 
|---|
| 86 |  ;- Set vars and default to prev ordering section if >1 proc entered
 | 
|---|
| 87 |  S EC4=$P(^ECH(ECFN,0),"^",19),ECINP=$P(^(0),"^",22),ECOM=$P(^(0),"^",12),ECID=$P($G(^SC(+EC4,0)),"^",7),ECODFN=ECDFN
 | 
|---|
| 88 |  ;
 | 
|---|
| 89 |  I $P(ECPCE,"~",2)="N" G FILE2
 | 
|---|
| 90 |  I ($P(ECPCE,"~",2)="O")&(ECINP'="O") G FILE2
 | 
|---|
| 91 |  D CLIN I 'ECPCL W !!,"You should edit this patient procedure and enter an active clinic." W:'$D(ECIOFLG) !!,"Press <RET> to continue " R X:DTIME
 | 
|---|
| 92 | FILE2 ;continue
 | 
|---|
| 93 |  S $P(^ECH(ECFN,0),"^",13)=DUZ,$P(^(0),"^",9)=ECP,$P(^(0),"^",20)=ECID,ECINP=$P(^(0),"^",22),ECDX=+$P($G(^("P")),"^",2)
 | 
|---|
| 94 |  S ECCPT=$S(ECP["EC":$P($G(^EC(725,+ECP,0)),"^",5),1:+ECP)
 | 
|---|
| 95 |  S $P(^ECH(ECFN,"P"),"^")=ECCPT
 | 
|---|
| 96 |  ;
 | 
|---|
| 97 |  ;- Procedure Reason(s)
 | 
|---|
| 98 |  I $G(ECP)]"" S ECSCR=+$O(^ECJ("AP",+ECL,+ECD,+ECC,ECP,0))
 | 
|---|
| 99 |  I ECSCR>0,($P($G(^ECJ(ECSCR,"PRO")),"^",5)=1),(+$O(^ECL("AD",ECSCR,0))) D  Q:+$G(ECOUT)
 | 
|---|
| 100 |  . S DIE="^ECH(",DA=ECFN,DR="34" D ^DIE K DA,DR,DIE
 | 
|---|
| 101 |  . I $D(DTOUT)!($D(Y)'=0) K ECSCR D RECDEL,MSG Q
 | 
|---|
| 102 |  K ECSCR
 | 
|---|
| 103 |  ;
 | 
|---|
| 104 | PCE ; format PCE data to send
 | 
|---|
| 105 |  Q:$P(ECPCE,"~",2)="N"  I $P(ECPCE,"~",2)="O"&(ECINP'="O") Q
 | 
|---|
| 106 |  D PCE^ECBEN2U
 | 
|---|
| 107 |  Q
 | 
|---|
| 108 | MSG ;
 | 
|---|
| 109 |  W !!,"All information was not entered.  This procedure has been deleted.",!!,"Press <RET> to continue " R X:DTIME S ECOUT=1
 | 
|---|
| 110 |  Q
 | 
|---|
| 111 | CLIN ;check for active associated clinic
 | 
|---|
| 112 |  S MSG1=1,MSG2=0
 | 
|---|
| 113 |  I 'EC4 S MSG2=1
 | 
|---|
| 114 |  D CLIN^ECPCEU
 | 
|---|
| 115 |  I 'ECPCL D
 | 
|---|
| 116 |  .W !!,"The clinic ",$S(MSG1:"associated with",1:"you selected for")," this procedure ",$S(MSG2:"has not been entered",1:"is inactive"),"."
 | 
|---|
| 117 |  .W !,"Workload data cannot be sent to PCE for this procedure with ",!,$S(MSG2:"a missing",1:"an inactive")," clinic."
 | 
|---|
| 118 |  S (MSG1,MSG2)=0
 | 
|---|
| 119 |  Q
 | 
|---|
| 120 |  ;
 | 
|---|
| 121 | GETCLN ;- Get assoc clinic from event code screen
 | 
|---|
| 122 |  N ECI
 | 
|---|
| 123 |  I $G(EC4)="",($G(ECP)]"") D
 | 
|---|
| 124 |  . S ECI=+$O(^ECJ("AP",+ECL,+ECD,+ECC,ECP,0)),EC4=+$P($G(^ECJ(+ECI,"PRO")),"^",4)
 | 
|---|
| 125 |  . S EC4N=$S($P($G(^SC(+EC4,0)),"^")]"":$P(^(0),"^"),1:"")
 | 
|---|
| 126 |  Q
 | 
|---|
| 127 |  ;
 | 
|---|
| 128 | RECDEL ; Delete record
 | 
|---|
| 129 |  ;
 | 
|---|
| 130 |  N DA,DIK
 | 
|---|
| 131 |  S DA=ECFN,DIK="^ECH(" D ^DIK
 | 
|---|
| 132 |  Q
 | 
|---|