| 1 | EASEZPVI ;ALB/AMA; GATHER VISTA INSURANCE DATA TO PRINT FROM DG OPTIONS ; 06 Jul 2005  1:45 PM
 | 
|---|
| 2 |  ;;1.0;ENROLLMENT APPLICATION SYSTEM;**57**;Mar 15, 2001
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  Q
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | INSUR(EASDFN) ;GET INSURANCE DATA
 | 
|---|
| 7 |  ;   INPUT:
 | 
|---|
| 8 |  ;      EASDFN - POINTER TO THE PATIENT FILE
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 |  ;IF THEY EXIST, FIND INSURANCE COMPANY NAME(S), ADDRESS,
 | 
|---|
| 11 |  ;CITY, STATE, ZIP, PHONE, GROUP CODE(S), POLICY NUMBER(S),
 | 
|---|
| 12 |  ;NAME(S) OF INSURED, MEDICARE PART A/B, AND EFFECTIVE DATE(S)
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 |  N KEY,VDATA,MULTIPLE,INDA,IENS,INSUR,INSORT,FLD,TYPE,IEN,INPTR,NAME
 | 
|---|
| 15 |  N STREET,CITY,STPTR,STATE,ZIP,PHONE,GRPCD,POLNO,INNAME,KEYNM,M,CAT
 | 
|---|
| 16 |  S KEY=+$$KEY711^EASEZU1("APPLICANT HAS INSURANCE")
 | 
|---|
| 17 |  S VDATA=$$GET^EASEZC1(EASDFN,"2^2^.3192")
 | 
|---|
| 18 |  I (VDATA=-1)!(VDATA="") S ^TMP("EZDATA",$J,KEY,1,2)="UNKNOWN"
 | 
|---|
| 19 |  I (VDATA'=-1),(VDATA'="") S ^TMP("EZDATA",$J,KEY,1,2)=VDATA
 | 
|---|
| 20 |  Q:VDATA'="YES"
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 |  S MULTIPLE=0
 | 
|---|
| 23 |  S INDA=0 F  S INDA=$O(^DPT(EASDFN,.312,INDA)) Q:'INDA  D
 | 
|---|
| 24 |  . D GETS^DIQ(2.312,INDA_","_EASDFN,"**","IE","INSUR")
 | 
|---|
| 25 |  S IENS="" F  S IENS=$O(INSUR(2.312,IENS)) Q:IENS=""  D
 | 
|---|
| 26 |  . S FLD=0 F  S FLD=$O(INSUR(2.312,IENS,FLD)) Q:'FLD  D
 | 
|---|
| 27 |  . . F TYPE="E","I" S INSORT(2.312,+IENS,FLD,TYPE)=$G(INSUR(2.312,IENS,FLD,TYPE))
 | 
|---|
| 28 |  K INSUR
 | 
|---|
| 29 |  S IEN=0 F  S IEN=$O(INSORT(2.312,IEN)) Q:'IEN  D
 | 
|---|
| 30 |  . Q:'$G(INSORT(2.312,IEN,.18,"I"))
 | 
|---|
| 31 |  . S INPTR=INSORT(2.312,IEN,.18,"I")
 | 
|---|
| 32 |  . Q:$$GET1^DIQ(355.3,INPTR,.11,"I")   ;INACTIVE FLAG
 | 
|---|
| 33 |  . I DT'>$G(INSORT(2.312,IEN,3,"I")) Q   ;INSUR EXPIRATION DATE
 | 
|---|
| 34 |  . S NAME=$G(INSORT(2.312,IEN,.18,"E"))
 | 
|---|
| 35 |  . S STREET=$$GET1^DIQ(36,INPTR,.111),CITY=$$GET1^DIQ(36,INPTR,.114)
 | 
|---|
| 36 |  . S STPTR=$$GET1^DIQ(36,INPTR,.115,"I"),STATE=$$GET1^DIQ(5,STPTR,1)
 | 
|---|
| 37 |  . S ZIP=$$GET1^DIQ(36,INPTR,.116),PHONE=$$GET1^DIQ(36,INPTR,.131)
 | 
|---|
| 38 |  . S GRPCD=$$GET1^DIQ(355.3,INPTR,.04),POLNO=$G(INSORT(2.312,IEN,1,"E"))
 | 
|---|
| 39 |  . S INNAME=$G(INSORT(2.312,IEN,17,"E"))
 | 
|---|
| 40 |  . S MULTIPLE=MULTIPLE+1
 | 
|---|
| 41 |  . I MULTIPLE=1 S KEYNM="APPLICANT",M=1
 | 
|---|
| 42 |  . E  S KEYNM="OTHER(N)",M=MULTIPLE-1
 | 
|---|
| 43 |  . S KEY=+$$KEY711^EASEZU1(KEYNM_" INSURANCE COMPANY")
 | 
|---|
| 44 |  . I NAME]"" S ^TMP("EZDATA",$J,KEY,M,2)=NAME
 | 
|---|
| 45 |  . S KEY=+$$KEY711^EASEZU1(KEYNM_" INSURANCE ADDRESS")
 | 
|---|
| 46 |  . I STREET]"" S ^TMP("EZDATA",$J,KEY,M,2)=STREET
 | 
|---|
| 47 |  . S KEY=+$$KEY711^EASEZU1(KEYNM_" INSURANCE CITY")
 | 
|---|
| 48 |  . I CITY]"" S ^TMP("EZDATA",$J,KEY,M,2)=CITY
 | 
|---|
| 49 |  . S KEY=+$$KEY711^EASEZU1(KEYNM_" INSURANCE STATE")
 | 
|---|
| 50 |  . I STATE]"" S ^TMP("EZDATA",$J,KEY,M,2)=STATE
 | 
|---|
| 51 |  . S KEY=+$$KEY711^EASEZU1(KEYNM_" INSURANCE ZIP")
 | 
|---|
| 52 |  . I ZIP]"" S ^TMP("EZDATA",$J,KEY,M,2)=ZIP
 | 
|---|
| 53 |  . S KEY=+$$KEY711^EASEZU1(KEYNM_" INSURANCE PHONE")
 | 
|---|
| 54 |  . I PHONE]"" S ^TMP("EZDATA",$J,KEY,M,2)=PHONE
 | 
|---|
| 55 |  . S KEY=+$$KEY711^EASEZU1(KEYNM_" INSURANCE GROUP CODE")
 | 
|---|
| 56 |  . I GRPCD]"" S ^TMP("EZDATA",$J,KEY,M,2)=GRPCD
 | 
|---|
| 57 |  . S KEY=+$$KEY711^EASEZU1(KEYNM_" INSURANCE POLICY HOLDER")
 | 
|---|
| 58 |  . I INNAME]"" S ^TMP("EZDATA",$J,KEY,M,2)=INNAME
 | 
|---|
| 59 |  . S KEY=+$$KEY711^EASEZU1(KEYNM_" INSURANCE POLICY NUMBER")
 | 
|---|
| 60 |  . I POLNO]"" S ^TMP("EZDATA",$J,KEY,M,2)=POLNO
 | 
|---|
| 61 |  . ;
 | 
|---|
| 62 |  . I $$GET^EASEZC1(INPTR,"355.3^355.3^.09")="MEDICARE (M)" D
 | 
|---|
| 63 |  . . S CAT=$$GET^EASEZC1(INPTR,"355.3^355.3^.14")
 | 
|---|
| 64 |  . . I (CAT'="MEDICARE PART A"),(CAT'="MEDICARE PART B") Q
 | 
|---|
| 65 |  . . S KEY=+$$KEY711^EASEZU1(CAT)
 | 
|---|
| 66 |  . . S ^TMP("EZDATA",$J,KEY,M,2)="YES"
 | 
|---|
| 67 |  . . S VDATA=$$GET^EASEZC1(EASDFN_";"_INDA,"2^2.312^8")
 | 
|---|
| 68 |  . . Q:VDATA=""  Q:VDATA=-1
 | 
|---|
| 69 |  . . S KEY=+$$KEY711^EASEZU1(CAT_" EFFECTIVE DATE")
 | 
|---|
| 70 |  . . S ^TMP("EZDATA",$J,KEY,M,2)=VDATA
 | 
|---|
| 71 |  ;
 | 
|---|
| 72 |  Q
 | 
|---|
| 73 |  ;
 | 
|---|
| 74 | I408(EASDFN,MTDT,EASARRAY) ;retrieve ien(s) to files #408.12,#408.13,#408.21,#408.22
 | 
|---|
| 75 |  ;   Modified from I408^EASEZI, called from V408^EASEZPV2
 | 
|---|
| 76 |  ;input EASDFN    = ien to #2
 | 
|---|
| 77 |  ;        MTDT    = Means Test date
 | 
|---|
| 78 |  ;output EASARRAY = ien(s) to files; passed by reference
 | 
|---|
| 79 |  ;   array(408,"V",1) = ien_#408.12^ien_#408.13^ien_#408.21^ien#408.22 ;veteran data
 | 
|---|
| 80 |  ;   array(408,"S",1) = ien_#408.12^ien_#408.13^ien_#408.21^ien#408.22 ;spouse data
 | 
|---|
| 81 |  ;   array(408,"C",multiple) = ien_#408.12^ien_#408.13^ien_#408.21^ien#408.22 ;child data
 | 
|---|
| 82 |  ;where ien_#408.13 = ien;global_root
 | 
|---|
| 83 |  ;
 | 
|---|
| 84 |  N Y,%F,X,%DT,MTDATE
 | 
|---|
| 85 |  N SUB1,SUB2,INCYR,DGINC,DGREL,DGINR
 | 
|---|
| 86 |  N I21,I22
 | 
|---|
| 87 |  ;
 | 
|---|
| 88 |  Q:'EASDFN
 | 
|---|
| 89 |  S Y=MTDT,%F=5,X=$$FMTE^XLFDT(Y,%F),X=+$P(X,"/",3)-1,%DT="P"
 | 
|---|
| 90 |  D ^%DT S MTDATE=Y
 | 
|---|
| 91 |  ;retrieve all associated 408 records; refer to api call for docu
 | 
|---|
| 92 |  I MTDT D ALL^DGMTU21(EASDFN,"VSC",MTDT)
 | 
|---|
| 93 |  ;massage "V" and "S" nodes for clear use in for loop below
 | 
|---|
| 94 |  S:$D(DGINC("V")) DGINC("V",1)=DGINC("V")
 | 
|---|
| 95 |  S:$D(DGINR("V")) DGINR("V",1)=DGINR("V")
 | 
|---|
| 96 |  S:$D(DGREL("V")) DGREL("V",1)=DGREL("V")
 | 
|---|
| 97 |  S:$D(DGINC("S")) DGINC("S",1)=DGINC("S")
 | 
|---|
| 98 |  S:$D(DGINR("S")) DGINR("S",1)=DGINR("S")
 | 
|---|
| 99 |  S:$D(DGREL("S")) DGREL("S",1)=DGREL("S")
 | 
|---|
| 100 |  ;
 | 
|---|
| 101 |  F SUB1="V","S","C" D
 | 
|---|
| 102 |  . Q:'$D(DGREL(SUB1))
 | 
|---|
| 103 |  . S SUB2=0
 | 
|---|
| 104 |  . F  S SUB2=$O(DGREL(SUB1,SUB2)) Q:'SUB2  D
 | 
|---|
| 105 |  . . S EASARRAY(408,SUB1,SUB2)=DGREL(SUB1,SUB2)
 | 
|---|
| 106 |  . . S I21=$G(DGINC(SUB1,SUB2))  ; 408.21 ien
 | 
|---|
| 107 |  . . Q:'I21
 | 
|---|
| 108 |  . . S INCYR=$$GET1^DIQ(408.21,I21_",",.01,"I")
 | 
|---|
| 109 |  . . ;NOTE: The following two quit conditions are probably not
 | 
|---|
| 110 |  . . ;      not necessary given the arrays being returned from
 | 
|---|
| 111 |  . . ;      ALL^DGMTU21
 | 
|---|
| 112 |  . . Q:'MTDT
 | 
|---|
| 113 |  . . Q:(INCYR<MTDATE)
 | 
|---|
| 114 |  . . S I22=$G(DGINR(SUB1,SUB2))  ;408.22 ien
 | 
|---|
| 115 |  . . Q:$G(^DGMT(408.22,+I22,"MT"))=""
 | 
|---|
| 116 |  . . ;
 | 
|---|
| 117 |  . . ;NOTE: The following line of code is designed to throw away all
 | 
|---|
| 118 |  . . ;      income/net worth figures when the dependent childs income
 | 
|---|
| 119 |  . . ;      is NOT available to the patient.   In the next release,
 | 
|---|
| 120 |  . . ;      this will need to be changed to set EASARRAY with I21 and
 | 
|---|
| 121 |  . . ;      I22 for all children and then screen the reporting of Child
 | 
|---|
| 122 |  . . ;      income (not available to patient) in the report output code.
 | 
|---|
| 123 |  . . ;      ASSUMING THAT THE NET WORTH IS COLLECTED WHEN IT IS NOT
 | 
|---|
| 124 |  . . ;      AVAILABLE TO THE PATIENT.  IF THAT IS NOT TRUE, LEAVE CODE.
 | 
|---|
| 125 |  . . ;
 | 
|---|
| 126 |  . . I SUB1="C" Q:(+$P($G(^DGMT(408.22,+I22,0)),"^",12))'=1
 | 
|---|
| 127 |  . . S EASARRAY(408,SUB1,SUB2)=EASARRAY(408,SUB1,SUB2)_U_I21_U_I22
 | 
|---|
| 128 |  Q
 | 
|---|
| 129 |  ;
 | 
|---|