| 1 | VAQDBIP7 ;ALB/JRP - CONTINUATION FOR VAQDBIP4: 3/17/2004 | 
|---|
| 2 | ;;1.5;PATIENT DATA EXCHANGE;**13,42**;NOV 17, 1993 | 
|---|
| 3 | INSURE ;INSURANCE EXTRACTION (ALL NON-EXPIRED) | 
|---|
| 4 | ;  DECLARATIONS DONE IN VAQDBIP4 | 
|---|
| 5 | ;GET LIST OF FIELDS TO EXTRACT | 
|---|
| 6 | S TMP=$T(INSURE+1^VAQDBII1) | 
|---|
| 7 | S FLDS(1)=$TR($P(TMP,";",4),",",";") | 
|---|
| 8 | S TMP=$T(INSURE+2^VAQDBII1) | 
|---|
| 9 | S FLDS(2)=$TR($P(TMP,";",4),",",";") | 
|---|
| 10 | S TMP=$T(INSURE+3^VAQDBII1) | 
|---|
| 11 | S FLDS(3)=$TR($P(TMP,";",4),",",";") | 
|---|
| 12 | ;ENCRYPT PATIENT NAME (ID FOR INSURANCE COMPANY & GROUP PLAN) | 
|---|
| 13 | S STRING=$P($$PATINFO^VAQUTL1(DFN),U,1) | 
|---|
| 14 | S ENCSTR=STRING | 
|---|
| 15 | I $$NCRPFLD^VAQUTL2(2,.01) X ENCRYPT | 
|---|
| 16 | S NAME=ENCSTR | 
|---|
| 17 | N VAQINS | 
|---|
| 18 | ;DETERMINE IF COVERED BY HEALTH INSURANCE & ENCRYPT | 
|---|
| 19 | ;S TMP=$$INSUR^IBBAPI(DFN,DT,"R",.VAQINS,"1,2,3,4,5,6,8,10,11,12,13,14,18") ; Get all active (not expired) insurance, reimbursable or not | 
|---|
| 20 | S TMP=$$INSUR^IBBAPI(DFN,"","ARB",.VAQINS,"1,2,3,4,5,6,8,10,11,12,13,14,18") ; Get all insurance, expired or not, reimbursable or not | 
|---|
| 21 | S STRING=$S(TMP:"YES",1:"NO") | 
|---|
| 22 | S ENCSTR=STRING | 
|---|
| 23 | I $$NCRPFLD^VAQUTL2(2,.3192) X ENCRYPT | 
|---|
| 24 | ;GET SEQUENCE NUMBER & STORE INFO | 
|---|
| 25 | S SEQ=$$GETSEQ^VAQDBIP(ARRAY,2,.3192) | 
|---|
| 26 | S @ARRAY@("ID",2,.3192,SEQ)=NAME | 
|---|
| 27 | S @ARRAY@("VALUE",2,.3192,SEQ)=ENCSTR | 
|---|
| 28 | ;EXTRACT DATA | 
|---|
| 29 | K ^UTILITY("DIQ1",$J) | 
|---|
| 30 | S TMP=0 | 
|---|
| 31 | F  S TMP=$O(VAQINS("IBBAPI","INSUR",TMP)) Q:'TMP  D | 
|---|
| 32 | .;EXTRACT INSURANCE INFO | 
|---|
| 33 | .;Prior to patch *42, we took the info directly from file 2. | 
|---|
| 34 | .;Now we get it from the IB API call. | 
|---|
| 35 | .;PATIENT (#2) file | 
|---|
| 36 | .;INSURANCE TYPE (#2.312) Subfile             API field equivalent | 
|---|
| 37 | .;------------------------------------------  -------------------- | 
|---|
| 38 | .;.01 INSURANCE TYPE (ptr to file 36)          1 insurance company name | 
|---|
| 39 | .;.18 GROUP PLAN (ptr to file 355.3)          -- | 
|---|
| 40 | .;1   SUBSCRIBER ID                           14 subscriber ID | 
|---|
| 41 | .;2   *GROUP NUMBER                           -- | 
|---|
| 42 | .;3   INSURANCE EXPIRATION DATE               11 expiration date | 
|---|
| 43 | .;6   WHOSE INSURANCE (v=vet;s=spouse;o=other)12 subscriber relationship | 
|---|
| 44 | .;7   *RENEWAL DATE                           -- | 
|---|
| 45 | .;8   EFFECTIVE DATE OF POLICY                10 effective date | 
|---|
| 46 | .;16  PT. RELATIONSHIP TO INSURED             12 subscriber relationship | 
|---|
| 47 | .;17  NAME OF INSURED                         13 subscriber name | 
|---|
| 48 | .S ^UTILITY("DIQ1",$J,2.312,TMP,.01,"E")=$P(VAQINS("IBBAPI","INSUR",TMP,1),U,2) | 
|---|
| 49 | .S ^UTILITY("DIQ1",$J,2.312,TMP,1,"E")=VAQINS("IBBAPI","INSUR",TMP,14) | 
|---|
| 50 | .S ^UTILITY("DIQ1",$J,2.312,TMP,3,"E")=$$FMTE^XLFDT(VAQINS("IBBAPI","INSUR",TMP,11)) | 
|---|
| 51 | .I VAQINS("IBBAPI","INSUR",TMP,12)[U S ^UTILITY("DIQ1",$J,2.312,TMP,6,"E")=$P(VAQINS("IBBAPI","INSUR",TMP,12),U,2) | 
|---|
| 52 | .E  S ^UTILITY("DIQ1",$J,2.312,TMP,6,"E")=VAQINS("IBBAPI","INSUR",TMP,12) | 
|---|
| 53 | .S ^UTILITY("DIQ1",$J,2.312,TMP,8,"E")=$$FMTE^XLFDT(VAQINS("IBBAPI","INSUR",TMP,10)) | 
|---|
| 54 | .S ^UTILITY("DIQ1",$J,2.312,TMP,16,"E")=^UTILITY("DIQ1",$J,2.312,TMP,6,"E") | 
|---|
| 55 | .S ^UTILITY("DIQ1",$J,2.312,TMP,17,"E")=VAQINS("IBBAPI","INSUR",TMP,13) | 
|---|
| 56 | .;EXTRACT INFO ABOUT INSURANCE COMPANY | 
|---|
| 57 | .;Prior to patch *42, we took the info directly from file 36. | 
|---|
| 58 | .;Now we get it from the IB API call. | 
|---|
| 59 | .;INSURANCE COMPANY (#36) file                API field equivalent | 
|---|
| 60 | .;------------------------------------------  -------------------- | 
|---|
| 61 | .;.01  NAME                                   1 insurance company name | 
|---|
| 62 | .;.111 STREET ADDRESS [LINE 1]                2 street address | 
|---|
| 63 | .;.112 STREET ADDRESS [LINE 2]                - | 
|---|
| 64 | .;.113 STREET ADDRESS [LINE 3]                - | 
|---|
| 65 | .;.114 CITY                                   3 city | 
|---|
| 66 | .;.115 STATE                                  4 state | 
|---|
| 67 | .;.316 ZIP                                    5 zip | 
|---|
| 68 | .;.131 PHONE NUMBER                           6 phone number | 
|---|
| 69 | .S ^UTILITY("DIQ1",$J,36,TMP,.01,"E")=$P(VAQINS("IBBAPI","INSUR",TMP,1),U,2) | 
|---|
| 70 | .S ^UTILITY("DIQ1",$J,36,TMP,.111,"E")=VAQINS("IBBAPI","INSUR",TMP,2) | 
|---|
| 71 | .S ^UTILITY("DIQ1",$J,36,TMP,.114,"E")=VAQINS("IBBAPI","INSUR",TMP,3) | 
|---|
| 72 | .S ^UTILITY("DIQ1",$J,36,TMP,.115,"E")=$P(VAQINS("IBBAPI","INSUR",TMP,4),U,2) | 
|---|
| 73 | .S ^UTILITY("DIQ1",$J,36,TMP,.316,"E")=VAQINS("IBBAPI","INSUR",TMP,5) | 
|---|
| 74 | .S ^UTILITY("DIQ1",$J,36,TMP,.131,"E")=VAQINS("IBBAPI","INSUR",TMP,6) | 
|---|
| 75 | .;EXTRACT INFO ABOUT GROUP PLAN | 
|---|
| 76 | .;Prior to patch *42, we took the info directly from file 355.3. | 
|---|
| 77 | .;Now we get it from the IB API call. | 
|---|
| 78 | .;GROUP INSURANCE PLAN (#355.3) file          API field equivalent | 
|---|
| 79 | .;------------------------------------------  -------------------- | 
|---|
| 80 | .;.01 INSURANCE COMPANY (ptr to file 36)       1 insurance company name | 
|---|
| 81 | .;.02 IS THIS A GROUP POLICY? (1=yes/0=no)     - | 
|---|
| 82 | .;.03 GROUP NAME                               8 policy IEN and name | 
|---|
| 83 | .;.04 GROUP NUMBER                            18 policy number | 
|---|
| 84 | .;.1  INDIVIDUAL POLICY PATIENT (ptr to file 2)- | 
|---|
| 85 | .S ^UTILITY("DIQ1",$J,355.3,TMP,.01,"E")=$P(VAQINS("IBBAPI","INSUR",TMP,1),U,2) | 
|---|
| 86 | .S ^UTILITY("DIQ1",$J,355.3,TMP,.03,"E")=$P(VAQINS("IBBAPI","INSUR",TMP,8),U,2) | 
|---|
| 87 | .S ^UTILITY("DIQ1",$J,355.3,TMP,.04,"E")=VAQINS("IBBAPI","INSUR",TMP,18) | 
|---|
| 88 | .;GET SEQUENCE NUMBER FOR INSURANCE | 
|---|
| 89 | .S SEQ=$$GETSEQ^VAQDBIP(ARRAY,2.312,.01) | 
|---|
| 90 | .;ENCRYPT COMPANY NAME | 
|---|
| 91 | .S STRING=$G(^UTILITY("DIQ1",$J,2.312,TMP,.01,"E")) | 
|---|
| 92 | .S ENCSTR=STRING | 
|---|
| 93 | .I $$NCRPFLD^VAQUTL2(2.312,.01) X ENCRYPT | 
|---|
| 94 | .S PRIME=ENCSTR | 
|---|
| 95 | .;STORE COMPANY NAME/ID | 
|---|
| 96 | .S @ARRAY@("ID",2.312,.01,SEQ)=NAME | 
|---|
| 97 | .S @ARRAY@("VALUE",2.312,.01,SEQ)=PRIME | 
|---|
| 98 | .F X=1:1:$L(FLDS(1),";") D | 
|---|
| 99 | ..S Z=$P(FLDS(1),";",X) | 
|---|
| 100 | ..Q:(Z=.01) | 
|---|
| 101 | ..;STORE ID (COMPANY NAME) | 
|---|
| 102 | ..S @ARRAY@("ID",2.312,Z,SEQ)=PRIME | 
|---|
| 103 | ..;ENCRYPT/STORE VALUE | 
|---|
| 104 | ..S STRING=$G(^UTILITY("DIQ1",$J,2.312,TMP,Z,"E")) | 
|---|
| 105 | ..S ENCSTR=STRING | 
|---|
| 106 | ..I $$NCRPFLD^VAQUTL2(2.312,Z) X ENCRYPT | 
|---|
| 107 | ..S @ARRAY@("VALUE",2.312,Z,SEQ)=ENCSTR | 
|---|
| 108 | .;GET SEQUENCE NUMBER FOR COMPANY | 
|---|
| 109 | .S SEQ=$$GETSEQ^VAQDBIP(ARRAY,36,.01) | 
|---|
| 110 | .;ENCRYPT COMPANY NAME | 
|---|
| 111 | .S STRING=$G(^UTILITY("DIQ1",$J,36,TMP,.01,"E")) | 
|---|
| 112 | .S ENCSTR=STRING | 
|---|
| 113 | .I $$NCRPFLD^VAQUTL2(36,.01) X ENCRYPT | 
|---|
| 114 | .S PRIME=ENCSTR | 
|---|
| 115 | .;STORE COMPANY NAME/ID | 
|---|
| 116 | .S @ARRAY@("ID",36,.01,SEQ)=NAME | 
|---|
| 117 | .S @ARRAY@("VALUE",36,.01,SEQ)=PRIME | 
|---|
| 118 | .F X=1:1:$L(FLDS(2),";") D | 
|---|
| 119 | ..S Z=$P(FLDS(2),";",X) | 
|---|
| 120 | ..Q:(Z=.01) | 
|---|
| 121 | ..;STORE ID (COMPANY NAME) | 
|---|
| 122 | ..S @ARRAY@("ID",36,Z,SEQ)=PRIME | 
|---|
| 123 | ..;ENCRYPT/STORE VALUE | 
|---|
| 124 | ..S STRING=$G(^UTILITY("DIQ1",$J,36,TMP,Z,"E")) | 
|---|
| 125 | ..S ENCSTR=STRING | 
|---|
| 126 | ..I $$NCRPFLD^VAQUTL2(36,Z) X ENCRYPT | 
|---|
| 127 | ..S @ARRAY@("VALUE",36,Z,SEQ)=ENCSTR | 
|---|
| 128 | .;GET SEQUENCE NUMBER FOR GROUP PLAN | 
|---|
| 129 | .S SEQ=$$GETSEQ^VAQDBIP(ARRAY,355.3,.01) | 
|---|
| 130 | .;ENCRYPT PLAN NAME | 
|---|
| 131 | .S STRING=$G(^UTILITY("DIQ1",$J,355.3,TMP,.01,"E")) | 
|---|
| 132 | .S ENCSTR=STRING | 
|---|
| 133 | .I $$NCRPFLD^VAQUTL2(355.3,.01) X ENCRYPT | 
|---|
| 134 | .S PRIME=ENCSTR | 
|---|
| 135 | .;STORE PLAN NAME/ID | 
|---|
| 136 | .S @ARRAY@("ID",355.3,.01,SEQ)=NAME | 
|---|
| 137 | .S @ARRAY@("VALUE",355.3,.01,SEQ)=PRIME | 
|---|
| 138 | .F X=1:1:$L(FLDS(3),";") D | 
|---|
| 139 | ..S Z=$P(FLDS(3),";",X) | 
|---|
| 140 | ..Q:(Z=.01) | 
|---|
| 141 | ..;STORE ID (PLAN NAME) | 
|---|
| 142 | ..S @ARRAY@("ID",355.3,Z,SEQ)=PRIME | 
|---|
| 143 | ..;ENCRYPT/STORE VALUE | 
|---|
| 144 | ..S STRING=$G(^UTILITY("DIQ1",$J,355.3,TMP,Z,"E")) | 
|---|
| 145 | ..S ENCSTR=STRING | 
|---|
| 146 | ..I $$NCRPFLD^VAQUTL2(355.3,Z) X ENCRYPT | 
|---|
| 147 | ..S @ARRAY@("VALUE",355.3,Z,SEQ)=ENCSTR | 
|---|
| 148 | .K ^UTILITY("DIQ1",$J) | 
|---|
| 149 | Q | 
|---|