| [613] | 1 | ECMFECS ;ALB/JAM-Event Capture Management - Event Code Screen Filer;27 Nov 00
 | 
|---|
 | 2 |  ;;2.0; EVENT CAPTURE ;**25,33,47,55,65**;8 May 96
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 | FILE ;Used by the RPC broker to file EC Code Screens in file #720.3
 | 
|---|
 | 5 |  ;     Variables passed in
 | 
|---|
 | 6 |  ;       ECIEN     - IEN of #720.3, if editing
 | 
|---|
 | 7 |  ;       ECL       - Location
 | 
|---|
 | 8 |  ;       ECD       - DSS Unit
 | 
|---|
 | 9 |  ;       ECC       - Category
 | 
|---|
 | 10 |  ;       ECP       - Procedure
 | 
|---|
 | 11 |  ;       ECST      - Event code screen status
 | 
|---|
 | 12 |  ;       ECSYN     - Synonym
 | 
|---|
 | 13 |  ;       ECVOL     - Volume
 | 
|---|
 | 14 |  ;       ECAC      - Associated Clinic
 | 
|---|
 | 15 |  ;       ECREAS    - Reason indicator
 | 
|---|
 | 16 |  ;       ECRES0..n - array of reasons
 | 
|---|
 | 17 |  ;
 | 
|---|
 | 18 |  ;     Variable return
 | 
|---|
 | 19 |  ;       ^TMP($J,"ECMSG",n)=Success or failure to file in #720.3^Message
 | 
|---|
 | 20 |  ;
 | 
|---|
 | 21 |  N ECCH,ECERR,ECX,ECY,ECFLG,ECR,ECI,X,Y,DIK,DIE
 | 
|---|
 | 22 |  S ECERR=0 D CHKDT I ECERR Q
 | 
|---|
 | 23 |  D VALDATA I ECERR Q
 | 
|---|
 | 24 |  I ECIEN'="" S ECFLG=0,ECX=$G(^ECJ(ECIEN,0)),ECY=$P(ECX,U) D  I ECERR Q
 | 
|---|
 | 25 |  .I ECX="" D  Q
 | 
|---|
 | 26 |  ..S ECERR=1,^TMP($J,"ECMSG",1)="0^Event Code Screen Not on File" Q
 | 
|---|
 | 27 |  .S ECL=$P(ECY,"-"),ECD=$P(ECY,"-",2),ECC=$P(ECY,"-",3),ECP=$P(ECY,"-",4)
 | 
|---|
 | 28 |  .I ECST="A",$P(ECX,U,2)'="" S DA=ECIEN,DIE="^ECJ(",DR="1///@" D ^DIE Q
 | 
|---|
 | 29 |  .I ECST="I",$P(ECX,U,2)="" S $P(^ECJ(ECIEN,0),U,2)=DT
 | 
|---|
 | 30 |  S ECC=$G(ECC,0),ECCH=ECL_"-"_ECD_"-"_ECC_"-"_ECP
 | 
|---|
 | 31 |  I '$P($G(^ECD(ECD,0)),U,11),ECC D  Q
 | 
|---|
 | 32 |  .S ECERR=1,^TMP($J,"ECMSG",1)="0^DSS Unit/Category inconsistency" Q
 | 
|---|
 | 33 |  I ECIEN="" D  I ECERR Q
 | 
|---|
 | 34 |  .I $D(^ECJ("B",ECCH)) D  Q
 | 
|---|
 | 35 |  ..S ECERR=1,^TMP($J,"ECMSG",1)="0^EC Screen Exist" Q
 | 
|---|
 | 36 |  .D NEWIEN
 | 
|---|
 | 37 |  S DA=ECIEN,DIK="^ECJ(",ECREAS=$S(ECREAS="Y":1,1:0) D IX^DIK
 | 
|---|
 | 38 |  S ^ECJ("AP",ECL,ECD,ECC,ECP,ECIEN)="",^ECJ("APP",ECL,ECD,ECP,ECIEN)=""
 | 
|---|
 | 39 |  S $P(^ECJ(ECIEN,"PRO"),U)=ECP,ECAC=$S($G(ECAC)'="":ECAC,1:"@")
 | 
|---|
 | 40 |  S DR="53////"_$S($G(ECSYN)'="":ECSYN,1:"@")_";54////"_$G(ECVOL,1)
 | 
|---|
 | 41 |  S DR=DR_";55////"_$G(ECAC)_";56////"_ECREAS,DIE="^ECJ(",DA=ECIEN
 | 
|---|
 | 42 |  D ^DIE K DA,DR,DIE
 | 
|---|
 | 43 |  I $D(DTOUT) D RECDEL S ^TMP($J,"ECMSG",1)="0^Record not Filed" Q
 | 
|---|
 | 44 |  I ECREAS D
 | 
|---|
 | 45 |  .K DIC,DA,DR,ECX S DIC="^ECL(",DIC(0)="L",DLAYGO=720.5,ECR=0
 | 
|---|
 | 46 |  .F ECI=0:1 S ECX="ECRES"_ECI Q:'$D(@ECX)  S ECR=(@ECX) D
 | 
|---|
 | 47 |  ..Q:ECR=""  I '$D(^ECR(ECR,0)) Q
 | 
|---|
 | 48 |  ..I '$D(^ECL("AD",ECIEN,ECR)) S X=ECR,DIC("DR")=".02////"_ECIEN
 | 
|---|
 | 49 |  ..K DD,DO,DLAYGO D FILE^DICN
 | 
|---|
 | 50 |  S ^TMP($J,"ECMSG",1)="1^Record Filed"_U_ECIEN
 | 
|---|
 | 51 |  Q
 | 
|---|
 | 52 |  ;
 | 
|---|
 | 53 | VALDATA ;validate data
 | 
|---|
 | 54 |  N ECRRX,ECRES
 | 
|---|
 | 55 |  S DIC="^DIC(4,",DIC(0)="NX",X=ECL D ^DIC I Y=-1 D  Q
 | 
|---|
 | 56 |  .S ECERR=1,^TMP($J,"ECMSG",1)="0^Invalid Location"
 | 
|---|
 | 57 |  S DIC="^ECD(",DIC(0)="NX",X=ECD D ^DIC I Y=-1 D  Q
 | 
|---|
 | 58 |  .S ECERR=1,^TMP($J,"ECMSG",1)="0^Invalid DSS Unit"
 | 
|---|
 | 59 |  I ECC S DIC="^EC(726,",DIC(0)="NX",X=ECC D ^DIC I Y=-1 D  Q
 | 
|---|
 | 60 |  .S ECERR=1,^TMP($J,"ECMSG",1)="0^Invalid Category"
 | 
|---|
 | 61 |  I ECP'="" D  I ECERR Q
 | 
|---|
 | 62 |  .; ATG-1003-32110 : by VMP
 | 
|---|
 | 63 |  .I ECP["ICPT" S ECRRX=$$CPT^ICPTCOD(+ECP) I +ECRRX>0 Q:$G(ECIEN)  I $P(ECRRX,U,7) Q
 | 
|---|
 | 64 |  .I ECP["EC",$D(^EC(725,+ECP,0)) Q
 | 
|---|
 | 65 |  .S ECERR=1,^TMP($J,"ECMSG",1)="0^Invalid Procedure"
 | 
|---|
 | 66 |  I $G(ECAC)'="" D  I ECERR Q
 | 
|---|
 | 67 |  .D CHK^DIE(720.3,55,"E","`"_ECAC,.ECRRX) I ECRRX'=ECAC D  Q
 | 
|---|
 | 68 |  ..S ECERR=1,^TMP($J,"ECMSG",1)="0^Invalid Associated Clinic"
 | 
|---|
 | 69 |  .S ECRES=$$CLNCK^SDUTL2(ECAC,0) I 'ECRES D  S ECERR=1
 | 
|---|
 | 70 |  ..S ^TMP($J,"ECMSG",1)=ECRES_" Clinic MUST be corrected before filing."
 | 
|---|
 | 71 |  I $G(ECSYN)'="" D CHK^DIE(720.3,53,"E",ECSYN,.ECRRX) I ECRRX'=ECSYN D  Q
 | 
|---|
 | 72 |  .S ECERR=1,^TMP($J,"ECMSG",1)="0^Invalid Synonym"
 | 
|---|
 | 73 |  I "^N^Y^"'[U_ECREAS_U D  Q
 | 
|---|
 | 74 |  .S ECERR=1,^TMP($J,"ECMSG",1)="0^Invalid Reason Response"
 | 
|---|
 | 75 |  Q
 | 
|---|
 | 76 | RECDEL ; Delete record
 | 
|---|
 | 77 |  I ECFLG S DA=ECIEN,DIK="^ECJ(" D ^DIK K DA,DIK
 | 
|---|
 | 78 |  Q
 | 
|---|
 | 79 |  ;
 | 
|---|
 | 80 | NEWIEN ;Create new IEN in file #720.3
 | 
|---|
 | 81 |  N DIC,DA,DD,DO
 | 
|---|
 | 82 |  L +^ECJ(0)
 | 
|---|
 | 83 |  S X=ECCH,DIC="^ECJ(",DIC(0)="L",DLAYGO=720.3 D FILE^DICN
 | 
|---|
 | 84 |  L -^ECJ(0)
 | 
|---|
 | 85 |  S ECIEN=+Y,$P(^ECJ(ECIEN,0),U,3)=DT,$P(^ECJ(ECIEN,"PRO"),U)=ECP
 | 
|---|
 | 86 |  I ECST="I" S $P(^ECJ(ECIEN,0),U,2)=DT
 | 
|---|
 | 87 |  Q
 | 
|---|
 | 88 | CHKDT ;Required Data Check
 | 
|---|
 | 89 |  N I,C
 | 
|---|
 | 90 |  S C=1
 | 
|---|
 | 91 |  F I="ECL","ECD","ECC","ECP","ECREAS" D
 | 
|---|
 | 92 |  .I $G(@I)="" S ^TMP($J,"ECMSG",C)="0^Key data missing "_I,C=C+1,ECERR=1
 | 
|---|
 | 93 |  Q
 | 
|---|
 | 94 | REASON ;Used by the RPC broker to file EC Reasons in file #720.4
 | 
|---|
 | 95 |  ;     Variables passed in
 | 
|---|
 | 96 |  ;       ECIEN     - IEN of #720.4, if editing
 | 
|---|
 | 97 |  ;       ECRES     - Reason
 | 
|---|
 | 98 |  ;       ECST      - Reason status
 | 
|---|
 | 99 |  ;
 | 
|---|
 | 100 |  ;     Variable return
 | 
|---|
 | 101 |  ;       ^TMP($J,"ECMSG",n)=Success or failure to file in #720.4^Message
 | 
|---|
 | 102 |  ;
 | 
|---|
 | 103 |  N ECOST,ECERR,ECFLG,X,Y,DIC,DIE
 | 
|---|
 | 104 |  S ECERR=0 I $G(ECRES)="" D  I ECERR Q
 | 
|---|
 | 105 |  .S ^TMP($J,"ECMSG",1)="0^Key data missing - Reason",ECERR=1
 | 
|---|
 | 106 |  D CHK^DIE(720.4,.01,,ECRES,.ECRRX) I ECRRX="^" D  Q
 | 
|---|
 | 107 |  .S ^TMP($J,"ECMSG",1)="0^Invalid Reason",ECERR=1
 | 
|---|
 | 108 |  S ECST=$G(ECST,"A")
 | 
|---|
 | 109 |  I "^I^A^"'[U_ECST_U S ^TMP($J,"ECMSG",1)="0^Invalid Reason Status" Q
 | 
|---|
 | 110 |  S ECST=$S(ECST="I":0,1:1),ECIEN=$G(ECIEN),ECFLG=1
 | 
|---|
 | 111 |  I ECIEN'="" S ECFLG=0 I $G(^ECR(ECIEN,0))="" D  I ECERR K ECST Q
 | 
|---|
 | 112 |  .S ECERR=1,^TMP($J,"ECMSG",1)="0^Reason Not on File" Q
 | 
|---|
 | 113 |  I ECIEN="" D  I ECERR K ECST Q
 | 
|---|
 | 114 |  .I $D(^ECR("B",ECRES)) S ECERR=1,^TMP($J,"ECMSG",1)="0^Reason Exist" Q
 | 
|---|
 | 115 |  .K DIE,DR,DA
 | 
|---|
 | 116 |  .L +^ECR(0)
 | 
|---|
 | 117 |  .S X=ECRES,DIC="^ECR(",DIC(0)="L",DLAYGO=720.4 D FILE^DICN
 | 
|---|
 | 118 |  .L -^ECR(0)
 | 
|---|
 | 119 |  .S ECIEN=+Y
 | 
|---|
 | 120 |  S ECOST=$P($G(^ECR(ECIEN,0)),U,2)
 | 
|---|
 | 121 |  I ECST'=ECOST D
 | 
|---|
 | 122 |  .S DIE=DIC,DA=ECIEN,DR=".02////"_ECST D ^DIE
 | 
|---|
 | 123 |  S ^TMP($J,"ECMSG",1)="1^Reason Filed"_U_ECIEN K ECST
 | 
|---|
 | 124 |  Q
 | 
|---|