Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: DVBHQR11

DVBHQR11.m

Go to the documentation of this file.
  1. DVBHQR11 ;ISC-ALBANY/PKE - parse HINQ response;6/10/09 7:39pm
  1. ;;4.0;HINQ;**32,35,49,63,65**;03/25/92;Build 19
  1. ;
  1. ;
  1. STAT ;Parse Statistics Segment for the records that have it.
  1. I ($P(DVBBAS(1),U,6)="A"!($P(DVBBAS(1),U,6)="E")),$P(DVBBAS(1),U,4)="00" D ASTAT
  1. I $P(DVBBAS(1),U,6)="B"!($P(DVBBAS(1),U,6)="F") D BSTAT
  1. I $P(DVBBAS(1),U,6)="E",$P(DVBBAS(1),U,4)'="00" D BSTAT
  1. I $P(DVBBAS(1),U,6)="C",$P(DVBBAS(1),U,4)=10 D CSTAT
  1. I $P(DVBBAS(1),U,6)="C",$P(DVBBAS(1),U,4)'=10 S DVBVET="C^^^^"
  1. ;
  1. G CHILD ;changing the order of the response message - diag will
  1. ;come at the very end to accommodate variable length records
  1. ;
  1. DIAG ;Diagnostics Segment.
  1. K DXP,DX,DVBDX,DVBEFF
  1. N DVBCUR,DVBEXT,DVBORIG
  1. ;with the HINQ replacement, interim solution (DVB*4*49) there are
  1. ;several changes to the diagnostic segment. Total # codes, Add'l
  1. ;codes, length of segment are not longer being sent. # SC Codes is
  1. ;being stored in DVBDXNO. The for loop at DIAG+15 will terminate
  1. ;after DVBDXNO, the 6 code limit from VBA has been increased to 150.
  1. ;Total # of SC Diagnostic Codes.
  1. S DVBV1=$E(X,1,3)
  1. I DVBV1["{" S DVBV2=2 D SIGN^DVBHUTIL Q:$G(DVBERCS) ;????
  1. S DVBDXNO=+DVBV1
  1. ;Combined Degree of Disability, Effective Date of Combined SC% Eval
  1. S DVBDXPCT=$E(X,4,6)
  1. S DVBDXPCT=$TR(DVBDXPCT," ")
  1. S DVBEFF=$E(X,7,14)
  1. S DVBEFF=$TR(DVBEFF," ")
  1. S L=15 D RON S L=1
  1. ;Y=Diagnostic Codes; DXP(I)=Percent of Disability:
  1. F I=1:1:DVBDXNO D
  1. . D RON S L=1
  1. . I $E(X,L,L+3)[" "!($E(X,L,L+3)']"") S L=L+25 Q
  1. . S Y=$E(X,L,L+3),DXP(I)=$E(X,L+4,L+6)
  1. . S DVBEXT(I)=$E(X,L+7,L+8)
  1. . S DVBEXT(I)=$TR(DVBEXT(I)," ")
  1. . S DVBORIG(I)=$E(X,L+9,L+16)
  1. . S DVBORIG(I)=$TR(DVBORIG(I)," ")
  1. . S DVBCUR(I)=$E(X,L+17,L+24)
  1. . S DVBCUR(I)=$TR(DVBCUR(I)," ")
  1. . S L=L+25 I DXP(I)'=" " S DX(I)="" F J=1:1:4 S Z=$E(Y,J) S:Z'?1N Z=$A(Z)-64 S:Z>9 Z=0 S DX(I)=DX(I)_Z
  1. F I=0:0 S I=$O(DX(I)) Q:'I S Y=DX(I),DX(I)=$S($O(^DIC(31,"C",+DX(I),0)):$O(^(0)),1:"") S DVBDX(I)=Y_"^"_DX(I)_"^"_DXP(I)_"^"_$G(DVBEXT(I))_"^"_$G(DVBORIG(I))_"^"_$G(DVBCUR(I))
  1. ;
  1. ;sorting by SC% so that they will be saved and displayed that way
  1. N DVBCT,DVBDD,DVBE,DVBEE
  1. F DVBE=0:0 S DVBE=$O(DVBDX(DVBE)) Q:DVBE'>0 S DVBDD(+$P(DVBDX(DVBE),U,3),DVBE)=DVBDX(DVBE)
  1. S DVBE="",DVBCT=1
  1. F S DVBE=$O(DVBDD(DVBE),-1) Q:DVBE']"" D
  1. . F DVBEE=0:0 S DVBEE=$O(DVBDD(DVBE,DVBEE)) Q:DVBEE'>0 D
  1. . . S DVBDX(DVBCT)=DVBDD(DVBE,DVBEE) S DVBCT=DVBCT+1
  1. K DVBDD,DX,DXP
  1. Q
  1. S L=L+1 D RON
  1. ;
  1. CHILD ;Child-Birth-Data.
  1. S $P(DVBCHI,U,1)=$E(X,1,2)
  1. S DVBV1=$E(X,3,4)
  1. I DVBV1?1N1A!(DVBV1["{") S DVBV2=2 D SIGN^DVBHUTIL Q:$G(DVBERCS)
  1. S DVBCHNO=DVBV1,L=5,J1=0 D RON
  1. I 'DVBCHNO S DVBCHNO=0 F DVBV=1:1:20 S L=20 D RON
  1. E F DVBV=1:1:20 S DVBV1=$E(X,1,19),L=20 D RON I DVBV'>DVBCHNO S DVBCHDOB=$E(DVBV1,1,8) S:DVBCHDOB?8N J1=J1+1,DVBCHILD(J1)=$E(DVBV1,9)_U_$E(DVBV1,10,19)_U_DVBCHDOB
  1. K DVBCHDOB,J1,DVBV1,DVBV
  1. ;
  1. WITH ;WITHHOLDING-APPORTIONED-SEGMENT.
  1. S $P(DVBWIT,U,1)=$E(X,1),DVBV1=$E(X,2,7)
  1. I DVBV1?5N1A!(DVBV1["{") S DVBV2=6 D SIGN^DVBHUTIL Q:$G(DVBERCS)
  1. S $P(DVBWIT,U,2)=+$E(DVBV1,1,4)_"."_$E(DVBV1,5,6)
  1. S DVBV1=$E(X,8,13)
  1. I DVBV1?5N1A!(DVBV1["{") S DVBV2=6 D SIGN^DVBHUTIL Q:$G(DVBERCS)
  1. S $P(DVBWIT,U,3)=+$E(DVBV1,1,4)_"."_$E(DVBV1,5,6)
  1. S DVBV1=$E(X,14,19)
  1. I DVBV1?5N1A!(DVBV1["{") S DVBV2=6 D SIGN^DVBHUTIL Q:$G(DVBERCS)
  1. S $P(DVBWIT,U,4)=+$E(DVBV1,1,4)_"."_$E(DVBV1,5,6),$P(DVBWIT,U,5)=$E(X,20)
  1. S L=21 D RON
  1. ;
  1. NMADR ;ADDRESS-SEGMENT.
  1. S M("+")=7 F I=65:1:70 S M($C(I))=71-I
  1. S M("-")=15 F I=74:1:80 S M($C(I))=88-I
  1. F I=84:1:88 S M($C(I))=104-I
  1. S M("&")=7
  1. ;Blank & Length of Segment:
  1. S $P(DVBADD,U,1)=$E(X,1),DVBV1=$E(X,2,4)
  1. I DVBV1?2N1A!(DVBV1["{") S DVBV2=3 D SIGN^DVBHUTIL Q:$G(DVBERCS)
  1. S $P(DVBADD,U,2)=DVBV1
  1. ;Sequence Control:
  1. S $P(DVBADD,U,3)=$E(X,5)
  1. ;Name Line Indicator:
  1. S $P(DVBADD,U,4)=$E(X,6)
  1. ;Zip Code:
  1. S DVBZIP=$E(X,7,15)
  1. S DVBZIP=$E(DVBZIP,1,5) ;use only 1st 5 digits - DVB*4*49
  1. S L=16,L1=15
  1. F I=1:1:DVBADRLN Q:$E(X,L)=" "!($E(X,L)="") Q:'$G(M($E(X,L))) S M=M($E(X,L)),DVBADR(I)=$E(X,L+1,L+M),L=L+M+1,L1=L1+M+1 D RON S L=1
  1. S $P(DVBADD,U,18)=145-L1
  1. S L=$P(DVBADD,U,18)+1 D RON
  1. K M,L1
  1. ;instead of calling DEDBL^DVBHQR12 call REF^DVBHQR12, since the DED/BAL
  1. ;segments will no longer be included in the VBA resp message, DVB*4*49
  1. G REF^DVBHQR12
  1. ;
  1. RON S X=$E(X,L,999),LX=$L(X),LY=254-LX I $D(X(2)),(LX+$L(X(2)))<256 S X=X_X(2) K X(2) D RON1 Q
  1. I $D(X(2)) S X=X_$E(X(2),1,LY),X(2)=$E(X(2),LY+1,999) Q
  1. Q
  1. ;
  1. RON1 F Z1=3:1:99 I $D(X(Z1)),'$D(X(Z1-1)) S X(Z1-1)=X(Z1) K X(Z1) Q:'$O(X(Z1))
  1. QUIT
  1. ;
  1. ASTAT ;Statistics Segment of Type A Record.
  1. S $P(DVBVET,U,1)="A",$P(DVBVET,U,2)=$E(X,1)
  1. S $P(DVBVET,U,3)=$E(X,2)
  1. S DVBBOS(1)=$E(X,3),DVBEOD(1)=$E(X,4,11),DVBRAD(1)=$E(X,12,19),DVBASVC=$E(X,20),DVBDOB=$E(X,21,28)
  1. S $P(DVBVET,U,9)=$E(X,29,30),$P(DVBVET,U,10)=$E(X,31)
  1. S $P(DVBP(2),U,2)=$E(X,32)
  1. S DVBEI=$E(X,33),DVBCI=$E(X,34)
  1. S $P(DVBVET,U,14)=$E(X,35)
  1. S DVBCPS=$E(X,36)
  1. S DVBPTI=$E(X,37)
  1. S $P(DVBP(2),U,6)=$E(X,38,39),$P(DVBP(2),U,3)=$E(X,40,41),$P(DVBP(2),U,1)=$E(X,42,43),$P(DVBP(2),U,4)=$E(X,44),$P(DVBP(2),U,5)=$E(X,45)
  1. S L=46 D RON
  1. S DVBSPDOB=$E(X,1,8)
  1. ;leave spouse DOB in format MMDDYYYY
  1. S DVBSPNAM=$E(X,9,18) ;;;DVBPTI=$E(X,40)
  1. ;Hospitalized SMC code:
  1. S $P(DVBVET,U,24)=$E(X,19,20)
  1. ;DOB of Father:
  1. S $P(DVBVET,U,25)=$E(X,21,28)
  1. ;DOB of Mother:
  1. S $P(DVBVET,U,26)=$E(X,29,36)
  1. ;Blanks:
  1. S $P(DVBVET,U,27)=$E(X,37,40)
  1. ;P&T disability and dental
  1. S DVBPTIDT=$E(X,41,48) ;DVB*4*65
  1. S DVBDENTI=$E(X,49) ;DVB*4*65
  1. S L=50 D RON
  1. ;
  1. Q
  1. ;
  1. BSTAT ;Statistics Segment of Type B Record.
  1. S $P(DVBVET,U,1)="B",$P(DVBVET,U,2)=$E(X,1)
  1. S $P(DVBVET,U,3)=$E(X,2)
  1. S DVBBOS(1)=$E(X,3),DVBEOD(1)=$E(X,4,11),DVBRAD(1)=$E(X,12,19),DVBASVC=$E(X,20),DVBDOB=$E(X,21,28)
  1. S DVBDOB=$E(DVBDOB,5,8)_$E(DVBDOB,1,4)
  1. S $P(DVBVET,U,9)=$E(X,29,30),$P(DVBVET,U,10)=$E(X,31,37)
  1. ;Age at Death & Death Date:
  1. S $P(DVBVET,U,11)=$E(X,38,39),$P(DVBVET,U,12)=$E(X,40,47)
  1. ;Blank & Pay Grade
  1. S $P(DVBVET,U,13)=$E(X,48),$P(DVBVET,U,14)=$E(X,49,50)
  1. ;DOB of Payee & DOB of 3rd Party:
  1. S $P(DVBVET,U,15)=$E(X,51,58),$P(DVBVET,U,16)=$E(X,59,66)
  1. ;Name of 3rd Party & Filler
  1. S $P(DVBVET,U,17)=$E(X,67,73),$P(DVBVET,U,18)=$E(74,85)
  1. S L=86 D RON
  1. Q
  1. ;
  1. CSTAT ;Statistics Segment of Type C Record.
  1. S $P(DVBVET,U,1)="C",$P(DVBVET,U,2)=$E(X,1)
  1. ;CP-APPORT-SPOUSE NAME & DOB
  1. S $P(DVBVET,U,3)=$E(X,2,11),$P(DVBVET,U,4)=$E(X,12,19)
  1. S $P(DVBVET,U,5)=$E(X,20,25)
  1. S L=86 D RON
  1. Q
  1. ;
  1. PENSION ;DVB*4*65
  1. S $P(DVBP(1),U,10)=$E(X,1,8),$P(DVBP(1),U,11)=$E(X,9,20),$P(DVBP(1),U,12)=$E(X,21,28),$P(DVBP(1),U,13)=$E(X,29,40),$P(DVBP(1),U,14)=$E(X,41,52),$P(DVBP(1),U,15)=$E(X,53,64),$P(DVBP(1),U,16)=$E(X,65,76)
  1. S L=77 D RON
  1. ;
  1. Q
  1. ;