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