| 1 | EASUM7 ;ALB/GN,EG - DELETE IVM MEANS TEST ; 07/07/2006
 | 
|---|
| 2 |  ;;1.0;ENROLLMENT APPLICATION SYSTEM;**42,74**;21-OCT-94;Build 6
 | 
|---|
| 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  ;EAS*1*42 This routine patterned after IVMUM7.
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 | EN ; this routine will process an IVM MT/CT delete request
 | 
|---|
| 8 |  ; from the IVM Center.
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 |  ; delete IVM MT/CT records in the following files:
 | 
|---|
| 11 |  ;     408.22
 | 
|---|
| 12 |  ;     408.21
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 |  ;     408.12 & 408.13 if IVM dependent
 | 
|---|
| 15 |  ;               or
 | 
|---|
| 16 |  ;     408.1275 if IVM & VAMC dependent (new 408.1275 record was
 | 
|---|
| 17 |  ;              created for each IVM dependent by upload). 
 | 
|---|
| 18 |  ;              change back the following fields to VAMC values
 | 
|---|
| 19 |  ;              from IVM values:
 | 
|---|
| 20 |  ;                 408.12  - relationship
 | 
|---|
| 21 |  ;                 408.13  - name, dob, ssn, sex
 | 
|---|
| 22 |  ;               or
 | 
|---|
| 23 |  ;     408.1275 if VAMC dependent (new inactivated 408.1275 record
 | 
|---|
| 24 |  ;              was created by upload).
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 |  ;     408.31
 | 
|---|
| 27 |  ;
 | 
|---|
| 28 |  ; the "PRIM" node for the VAMC MT will be changed to 1 
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 |  ; the event driver will be called twice
 | 
|---|
| 31 |  ;    DGMTACT="DUP"
 | 
|---|
| 32 |  ;    DGMTACT="DEL"
 | 
|---|
| 33 |  ;
 | 
|---|
| 34 |  ;
 | 
|---|
| 35 |  ;     Input       IVMMTDT      MT date
 | 
|---|
| 36 |  ;                 IVMMTIEN     primary MT IEN
 | 
|---|
| 37 |  ;
 | 
|---|
| 38 |  ; check primary test is IVM
 | 
|---|
| 39 |  S IVMNO=$G(^DGMT(408.31,IVMMTIEN,0)) ; ivm mt 0th node  
 | 
|---|
| 40 |  S IVMSOT=$P($G(^DG(408.34,+$P(IVMNO,"^",23),0)),"^") ; source of test
 | 
|---|
| 41 |  I IVMSOT'="IVM" D  Q
 | 
|---|
| 42 |  .S HLERR="IVM "_^DG(408.33,DGMTYPT,0)_" for income year "_($E(DGLY,1,3)+1700)_" not found"
 | 
|---|
| 43 |  .D ACK^IVMPREC
 | 
|---|
| 44 |  ;
 | 
|---|
| 45 |  ; get VAMC MT/CT via AD xref (by type) to be re-instated    ;EAS*1*42
 | 
|---|
| 46 |  S IVMVAMC="A" ; ivmvamc is vamc ien
 | 
|---|
| 47 |  ;make sure you get the latest test of that type for that date first
 | 
|---|
| 48 |  F  S IVMVAMC=$O(^DGMT(408.31,"AD",DGMTYPT,DFN,IVMMTDT,IVMVAMC),-1) Q:'IVMVAMC  D  Q:$D(IVMVNO)
 | 
|---|
| 49 |  . S IVMVNO=$G(^DGMT(408.31,+IVMVAMC,0)) ; vamc 0th node
 | 
|---|
| 50 |  . S IVMSOT=$P($G(^DG(408.34,+$P(IVMVNO,"^",23),0)),"^") ; source of test
 | 
|---|
| 51 |  . I IVMSOT'="VAMC",IVMSOT'="DCD",IVMSOT'="OTHER FACILITY" K IVMVNO Q
 | 
|---|
| 52 |  . Q
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 |  ; if no previous VAMC RXCT (type 2) on file, then          ;EAS*1*42
 | 
|---|
| 55 |  ; simply delete the IVM RX converted 408.31 record
 | 
|---|
| 56 |  I '$D(IVMVNO),DGMTYPT=2 D EN1^EASUM8 Q
 | 
|---|
| 57 |  ;
 | 
|---|
| 58 |  ; if no VAMC MT type 1, then error
 | 
|---|
| 59 |  I '$D(IVMVNO) D  Q
 | 
|---|
| 60 |  .S HLERR=IVMSOT_^DG(408.33,DGMTYPT,0)_" for income year "_($E(DGLY,1,3)+1700)_" not found"
 | 
|---|
| 61 |  .D ACK^IVMPREC
 | 
|---|
| 62 |  ;
 | 
|---|
| 63 |  ; get array dginc containing ien(s) of 408.21
 | 
|---|
| 64 |  ; get array dginr containing ien(s) of 408.22
 | 
|---|
| 65 |  D ALL^DGMTU21(DFN,"VSC",IVMMTDT,"IR",IVMMTIEN)
 | 
|---|
| 66 |  ;
 | 
|---|
| 67 |  ; delete 408.22
 | 
|---|
| 68 |  ;
 | 
|---|
| 69 |  S DA=$G(DGINR("V")) D
 | 
|---|
| 70 |  .Q:'DA  S DIK="^DGMT(408.22," D ^DIK
 | 
|---|
| 71 |  S DA=$G(DGINR("S")) D
 | 
|---|
| 72 |  .Q:'DA  S DIK="^DGMT(408.22," D ^DIK
 | 
|---|
| 73 |  S IVMN=0
 | 
|---|
| 74 |  F  S IVMN=$O(DGINR("C",IVMN)) Q:'IVMN  S DA=$G(DGINR("C",IVMN)),DIK="^DGMT(408.22," D ^DIK
 | 
|---|
| 75 |  ;
 | 
|---|
| 76 |  ; delete 408.21
 | 
|---|
| 77 |  ;
 | 
|---|
| 78 |  S DA=$G(DGINC("V")) D
 | 
|---|
| 79 |  .Q:'DA  S DIK="^DGMT(408.21," D ^DIK
 | 
|---|
| 80 |  S DA=$G(DGINC("S")) D
 | 
|---|
| 81 |  .Q:'DA  S DIK="^DGMT(408.21," D ^DIK
 | 
|---|
| 82 |  S IVMN=0
 | 
|---|
| 83 |  F  S IVMN=$O(DGINC("C",IVMN)) Q:'IVMN  S DA=$G(DGINC("C",IVMN)),DIK="^DGMT(408.21," D ^DIK
 | 
|---|
| 84 |  ;
 | 
|---|
| 85 |  ; logic for 408.12/408.1275 & 408.13
 | 
|---|
| 86 |  ;
 | 
|---|
| 87 |  D SETUPAR^EASUM8
 | 
|---|
| 88 |  ;
 | 
|---|
| 89 |  ; no "AIVM" x-ref means
 | 
|---|
| 90 |  ;   no dependents
 | 
|---|
| 91 |  ;       or
 | 
|---|
| 92 |  ; IVM v2.0 means test (no dependent difference)
 | 
|---|
| 93 |  ; only 408.22, 408.21, and 408.31 records will be deleted
 | 
|---|
| 94 |  ;
 | 
|---|
| 95 |  S IVM12="" F  S IVM12=$O(^DGPR(408.12,"AIVM",IVMMTIEN,IVM12)) Q:'IVM12  D  Q:$D(IVMFERR)
 | 
|---|
| 96 |  .I $G(^DGPR(408.12,+IVM12,0))']"" D  Q
 | 
|---|
| 97 |  ..S (IVMTEXT(6),HLERR)="Can't find 408.12 record "_IVM12
 | 
|---|
| 98 |  ..D ERRBULL^IVMPREC7,MAIL^IVMUFNC()
 | 
|---|
| 99 |  ..S IVMFERR=""
 | 
|---|
| 100 |  ..D ACK^IVMPREC
 | 
|---|
| 101 |  ..Q
 | 
|---|
| 102 |  .;
 | 
|---|
| 103 |  .I $P($G(^DGPR(408.12,+IVM12,"E",0)),"^",4)=1 D  Q
 | 
|---|
| 104 |  ..; only 1 multiple record (408.1275) indicates IVM dependent
 | 
|---|
| 105 |  ..; delete 408.12 & 408.13 records for IVM dependent
 | 
|---|
| 106 |  ..S IVM13=$P($P($G(^DGPR(408.12,+IVM12,0)),"^",3),";") I $G(^DGPR(408.13,+IVM13,0))']"" D  Q
 | 
|---|
| 107 |  ...S (IVMTEXT(6),HLERR)="Can't find 408.13 record "_IVM13
 | 
|---|
| 108 |  ...D ERRBULL^IVMPREC7,MAIL^IVMUFNC()
 | 
|---|
| 109 |  ...S IVMFERR=""
 | 
|---|
| 110 |  ...D ACK^IVMPREC
 | 
|---|
| 111 |  ...Q
 | 
|---|
| 112 |  ..S DA=IVM12,DIK="^DGPR(408.12," D ^DIK K DA,DIK
 | 
|---|
| 113 |  ..S DA=IVM13,DIK="^DGPR(408.13," D ^DIK K DA,DIK
 | 
|---|
| 114 |  ..Q
 | 
|---|
| 115 |  .;
 | 
|---|
| 116 |  .; delete 408.1275 record for IVM dependent and
 | 
|---|
| 117 |  .; change demo data in 408.12 & 408.13 back to VAMC values
 | 
|---|
| 118 |  .;       or
 | 
|---|
| 119 |  .; delete 408.1275 record for inactivated VAMC dependent
 | 
|---|
| 120 |  .S IVM121="",IVM121=$O(^DGPR(408.12,"AIVM",IVMMTIEN,+IVM12,IVM121))
 | 
|---|
| 121 |  .I $G(^DGPR(408.12,+IVM12,"E",+IVM121,0))']"" D  Q
 | 
|---|
| 122 |  ..S (IVMTEXT(6),HLERR)="Can't find 408.1275 record "_IVM12_"  "_IVM121
 | 
|---|
| 123 |  ..D ERRBULL^IVMPREC7,MAIL^IVMUFNC()
 | 
|---|
| 124 |  ..S IVMFERR=""
 | 
|---|
| 125 |  ..D ACK^IVMPREC
 | 
|---|
| 126 |  ..Q
 | 
|---|
| 127 |  .S IVMVAMCA=$P(^(0),"^",2) ; dependent active?
 | 
|---|
| 128 |  .S DA(1)=IVM12,DA=IVM121,DIK="^DGPR(408.12,"_DA(1)_",""E"","
 | 
|---|
| 129 |  .D ^DIK K DA(1),DA,DIK
 | 
|---|
| 130 |  .Q:'IVMVAMCA  ; quit if inactivated VAMC dependent 
 | 
|---|
| 131 |  .S IVM13=+$P($P($G(^DGPR(408.12,+IVM12,0)),"^",3),";")
 | 
|---|
| 132 |  .D EN^EASUM8
 | 
|---|
| 133 |  .Q
 | 
|---|
| 134 |  ;
 | 
|---|
| 135 |  Q:$D(IVMFERR)
 | 
|---|
| 136 |  D EN1^EASUM8
 | 
|---|
| 137 |  Q
 | 
|---|
| 138 |  ;
 | 
|---|
| 139 | ERRBULL ; build mail message for transmission to IVM mail group notifying site
 | 
|---|
| 140 |  ; of upload error.
 | 
|---|
| 141 |  S IVMPAT=$$PT^IVMUFNC4(DFN)
 | 
|---|
| 142 |  S XMSUB="IVM - MEANS TEST UPLOAD"
 | 
|---|
| 143 |  S IVMTEXT(1)="The following error occured when an Income Verification Match"
 | 
|---|
| 144 |  S IVMTEXT(2)="verified Means Test was being uploaded for the following patient:"
 | 
|---|
| 145 |  S IVMTEXT(3)=" "
 | 
|---|
| 146 |  S IVMTEXT(4)="    NAME:     "_$P(IVMPAT,"^")
 | 
|---|
| 147 |  S IVMTEXT(5)="    ID:       "_$P(IVMPAT,"^",2)
 | 
|---|
| 148 |  S IVMTEXT(6)="    ERROR:    "_IVMTEXT(6)
 | 
|---|
| 149 |  Q
 | 
|---|
| 150 |  ;
 | 
|---|
| 151 | MTBULL ; build mail message for transmission to IVM mail group notifying them
 | 
|---|
| 152 |  ; an IVM verified MT/CT has been uploaded into DHCP for a patient.
 | 
|---|
| 153 |  ;
 | 
|---|
| 154 |  S IVMPAT=$$PT^IVMUFNC4(DFN)
 | 
|---|
| 155 |  S XMSUB="IVM - INCOME TEST UPLOAD for "_$P($P(IVMPAT,"^"),",")_" ("_$P(IVMPAT,"^",3)_")"
 | 
|---|
| 156 |  S IVMTEXT(1)="An Income Verification Match verified "
 | 
|---|
| 157 |  S IVMTEXT(1)=IVMTEXT(1)_^DG(408.33,DGMTYPT,0)_" has been uploaded"
 | 
|---|
| 158 |  S IVMTEXT(2)="for the following patient:"
 | 
|---|
| 159 |  S IVMTEXT(3)=" "
 | 
|---|
| 160 |  S IVMTEXT(4)="  NAME:           "_$P(IVMPAT,"^")
 | 
|---|
| 161 |  S IVMTEXT(5)="  ID:             "_$P(IVMPAT,"^",2)
 | 
|---|
| 162 |  S Y=IVMMTDT X ^DD("DD")
 | 
|---|
| 163 |  S IVMTEXT(6)="  DATE OF TEST:   "_Y
 | 
|---|
| 164 |  ;set previous sts from previous 408.31 or previous RX sts
 | 
|---|
| 165 |  S IVMTEXT(7)="  PREV CATEGORY:  "
 | 
|---|
| 166 |  I DGMTYPT=2 D
 | 
|---|
| 167 |  . S IVMTEXT(7)=IVMTEXT(7)_IVMCEB
 | 
|---|
| 168 |  E  D
 | 
|---|
| 169 |  . S IVMTEXT(7)=IVMTEXT(7)_$P($G(^DG(408.32,+$P(IVMMT31,"^",3),0)),"^",1)
 | 
|---|
| 170 |  ;
 | 
|---|
| 171 |  S IVMTEXT(8)="  NEW CATEGORY:   "_DGCAT
 | 
|---|
| 172 |  I IVM5 S Y=IVM5 X ^DD("DD") S IVMTEXT(9)="  DATE/TIME OF ADJUDICATION:  "_Y
 | 
|---|
| 173 |  Q
 | 
|---|