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

VPRDIB.m

Go to the documentation of this file.
  1. VPRDIB ;SLC/MKB -- Integrated Billing (insurance) ;3/14/12 09:01
  1. ;;1.0;VIRTUAL PATIENT RECORD;**1,5**;Sep 01,2011;Build 21
  1. ;
  1. ; External References DBIA#
  1. ; ------------------- -----
  1. ; IBBAPI 4419
  1. ;
  1. ;
  1. ; ------------ Get data from VistA ------------
  1. ;
  1. EN(DFN,BEG,END,MAX,ID) ; -- find patient's insurance data
  1. ; [END,ID not currently used]
  1. N X,I,VPRX,VPRITM,VPRCNT,VPRINS,VPRDT,VPRSTS
  1. S DFN=+$G(DFN) Q:DFN<1
  1. S MAX=$G(MAX,9999),VPRDT=DT
  1. ; $G(BEG),BEG>2000000 S VPRDT=BEG
  1. S VPRSTS=$G(FILTER("status"),"RB")
  1. I VPRSTS["A" S VPRDT="" ;no date if requesting inactive policies
  1. ;
  1. ; get one policy
  1. ;I $G(ID) D EN1(ID,.VPRITM),XML(.VPRITM) Q
  1. ;
  1. ; get all policies
  1. S X=$$INSUR^IBBAPI(DFN,VPRDT,VPRSTS,.VPRX,"*") Q:X<1
  1. S (I,VPRCNT)=0 F S I=$O(VPRX("IBBAPI","INSUR",I)) Q:I<1 D Q:VPRCNT'<MAX
  1. . M VPRINS=VPRX("IBBAPI","INSUR",I) K VPRITM
  1. . I $G(ID),DFN'=+ID!(+VPRINS(1)'=$P(ID,";",2))!(+VPRINS(8)'=$P(ID,";",3)) Q
  1. . S VPRITM("id")=DFN_";"_+VPRINS(1)_";"_+VPRINS(8) ; = DFN;COMPANY;POLICY
  1. . S VPRITM("company")=VPRINS(1),X=VPRINS(2)
  1. . F J=23,24,3,4,5 S X=X_U_VPRINS(J)
  1. . S VPRITM("company","address")=X
  1. . S X=VPRINS(6) S:$L(X) VPRITM("company","telecom")=$$FORMAT(X)
  1. . S VPRITM("effectiveDate")=VPRINS(10)
  1. . S VPRITM("expirationDate")=VPRINS(11)
  1. . S VPRITM("groupName")=$P(VPRINS(8),U,2)
  1. . S VPRITM("groupNumber")=VPRINS(18)
  1. . S X=VPRINS(21),VPRITM("insuranceType")=X
  1. . ; VPRITM("insuranceType")=$$GET^XPAR(355.1,+X_",",.03) ;Maj Catg
  1. . S VPRITM("relationship")=$P(VPRINS(19),U,2)
  1. . S VPRITM("subscriber")=VPRINS(14)_U_VPRINS(13)
  1. . ; VPRITM("subscriber","address")
  1. . ; VPRITM("subscriber","telecom")
  1. . ; VPRITM("memberID")
  1. . S VPRITM("facility")=$$FAC^VPRD ;local stn#^name
  1. . D XML(.VPRITM) S VPRCNT=VPRCNT+1
  1. Q
  1. ;
  1. FORMAT(X) ; -- enforce (xxx)xxx-xxxx phone format
  1. S X=$G(X) I X?1"("3N1")"3N1"-"4N.E Q X
  1. N P,N,I,Y S P=""
  1. F I=1:1:$L(X) S N=$E(X,I) I N=+N S P=P_N
  1. S:$L(P)<10 P=$E("0000000000",1,10-$L(P))_P
  1. S Y=$S(P:"("_$E(P,1,3)_")"_$E(P,4,6)_"-"_$E(P,7,10),1:"")
  1. Q Y
  1. ;
  1. ; ------------ Return data to middle tier ------------
  1. ;
  1. XML(ITEM) ; -- Return patient data as XML in @VPR@(n)
  1. ; as <element code='123' displayName='ABC' />
  1. N ATT,X,Y,I,SUB
  1. D ADD("<insurancePolicy>") S VPRTOTL=$G(VPRTOTL)+1
  1. S ATT="" F S ATT=$O(ITEM(ATT)) Q:ATT="" D D:$L(Y) ADD(Y)
  1. . S X=$G(ITEM(ATT)),Y="" Q:'$L(X)
  1. . I X'["^" S Y="<"_ATT_" value='"_$$ESC^VPRD(X)
  1. . I $L(X,"^")>1 S Y="<"_ATT_" code='"_$P(X,U)_"' name='"_$$ESC^VPRD($P(X,U,2))
  1. . S SUB=$O(ITEM(ATT,"")) I SUB="" S Y=Y_"' />" Q
  1. . S Y=Y_"' >" D ADD(Y) S X=$G(ITEM(ATT,SUB))
  1. . I SUB="address" D ADDR(X)
  1. . I SUB="telecom" D PHONE(X)
  1. . S Y="</"_ATT_">"
  1. D ADD("</insurancePolicy>")
  1. Q
  1. ;
  1. ADDR(X) ; -- XML address node from X=street1^st2^st3^city^state^zip
  1. N I,Y Q:$L(X)'>5 ;no data
  1. S Y="<address"
  1. F I=1,2,3 I $L($P(X,U,I)) S Y=Y_" streetLine"_I_"='"_$$ESC^VPRD($P(X,U,I))_"'"
  1. I $L($P(X,U,4)) S Y=Y_" city='"_$$ESC^VPRD($P(X,U,4))_"'"
  1. I $L($P(X,U,5)) S Y=Y_" stateProvince='"_$P(X,U,5)_"'"
  1. I $L($P(X,U,6)) S Y=Y_" postalCode='"_$P(X,U,6)_"'"
  1. S Y=Y_" />" D ADD(Y)
  1. Q
  1. ;
  1. PHONE(X) ; -- XML telecom node from X=home^cell^work numbers
  1. N I,Y Q:$L(X)'>2 ;no data
  1. D ADD("<telecomList>")
  1. I $L($P(X,U,1)) S Y="<telecom usageType='H' value='"_$P(X,U,1)_"' />" D ADD(Y)
  1. I $L($P(X,U,2)) S Y="<telecom usageType='MC' value='"_$P(X,U,2)_"' />" D ADD(Y)
  1. I $L($P(X,U,3)) S Y="<telecom usageType='WP' value='"_$P(X,U,3)_"' />" D ADD(Y)
  1. D ADD("</telecomList>")
  1. Q
  1. ;
  1. ADD(X) ; Add a line @VPR@(n)=X
  1. S VPRI=$G(VPRI)+1
  1. S @VPR@(VPRI)=X
  1. Q