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

NHINVIMM.m

Go to the documentation of this file.
  1. NHINVIMM ;SLC/MKB -- Immunizations extract
  1. ;;1.0;NHIN;**1**;Oct 25, 2010;Build 11
  1. ;
  1. ; External References DBIA#
  1. ; ------------------- -----
  1. ; ^DIC(4 10090
  1. ; ^VA(200 10060
  1. ; DIC 2051
  1. ; DIQ 2056
  1. ; PXRHS03,^TMP("PXI",$J) 1239
  1. ; XUAF4 2171
  1. ;
  1. ; ------------ Get immunizations from VistA ------------
  1. ;
  1. EN(DFN,BEG,END,MAX,IFN) ; -- find patient's immunizations
  1. N NHITM,NHICNT,NM,IDT,X
  1. S DFN=+$G(DFN) Q:DFN<1 ;invalid patient
  1. S BEG=$G(BEG,1410101),END=$G(END,9999998),MAX=$G(MAX,999999),NHICNT=0
  1. K ^TMP("PXI",$J) D IMMUN^PXRHS03(DFN)
  1. ;
  1. ; get one immunization
  1. I $G(IFN) D Q
  1. . N DONE S DONE=0
  1. . S NM="" F S NM=$O(^TMP("PXI",$J,NM)) Q:NM="" D Q:DONE
  1. .. S IDT=0 F S IDT=$O(^TMP("PXI",$J,NM,IDT)) Q:IDT<1 I $D(^(IDT,IFN)) D Q
  1. ... D EN1(.NHITM),XML(.NHITM)
  1. ... S DONE=1
  1. . K ^TMP("PXI",$J)
  1. ;
  1. ; get all immunizations
  1. S X=BEG,BEG=9999999-END-.000001,END=9999999-X I $L(END,".")<2 S END=END_".2359"
  1. S NM="" F S NM=$O(^TMP("PXI",$J,NM)) Q:NM="" D
  1. . S IDT=BEG F S IDT=$O(^TMP("PXI",$J,NM,IDT)) Q:IDT<1!(IDT>END) D
  1. .. S IFN=0 F S IFN=$O(^TMP("PXI",$J,NM,IDT,IFN)) Q:IFN<1 D Q:NHICNT'<MAX
  1. ... K NHITM D EN1(.NHITM),XML(.NHITM)
  1. ... S NHICNT=NHICNT+1
  1. K ^TMP("PXI",$J)
  1. Q
  1. ;
  1. EN1(IMM) ; -- return an immunization in IMM("attribute")=value
  1. ; Expects ^TMP("PXI",$J,NM,IDT,IFN) from IMMUN^PXRHS03
  1. N X0,X1,CPT,DA,X,Y K IMM
  1. S X0=$G(^TMP("PXI",$J,NM,IDT,IFN,0)),X1=$G(^(1)),X=$G(^("COM"))
  1. S:$L(X) IMM("comment")=X
  1. S IMM("id")=IFN,IMM("name")=$P(X0,U)
  1. S IMM("administered")=+$P(X0,U,3)
  1. S IMM("series")=$P(X0,U,5)
  1. S IMM("reaction")=$P(X0,U,6)
  1. S IMM("contraindicated")=+$P(X0,U,7)
  1. S IMM("location")=$P(X1,U)
  1. S X=$P(X1,U,3) I $L(X) D
  1. . S Y=$$LKUP^XUAF4(X) ;ien
  1. . I Y<1 S Y=+$O(^DIC(4,"B",X,0)) ;dupl -> get 1st
  1. . S IMM("facility")=$$STA^XUAF4(Y)_U_X
  1. I '$D(IMM("facility")) S IMM("facility")=$$FAC^NHINV
  1. S X=$P(X0,U,9) S:'$L(X) X=$P(X0,U,8)
  1. I $L(X) S IMM("provider")=+$O(^VA(200,"B",X,0))_U_X
  1. ;
  1. S DA=+$$GET1^DIQ(9000010.11,IFN_",",.01,"I") Q:'DA
  1. S X=+$$FIND1^DIC(811.1,,"QX",DA_";AUTTIMM(","B") I X>0 D
  1. . S Y=$$GET1^DIQ(811.1,X_",",.02,"I") Q:Y<1
  1. . S CPT=$G(@(U_$P(Y,";",2)_+Y_",0)"))
  1. . S IMM("cpt")=$P(CPT,U,1,2)
  1. Q
  1. ;
  1. ; ------------ Return data to middle tier ------------
  1. ;
  1. XML(IMM) ; -- Return immunizations as XML
  1. N ATT,X,Y,I,P,NAMES,TAG
  1. D ADD("<immunization>") S NHINTOTL=$G(NHINTOTL)+1
  1. S ATT="" F S ATT=$O(IMM(ATT)) Q:ATT="" D
  1. . S X=$G(IMM(ATT)),Y="" Q:'$L(X)
  1. . I X'["^" S Y="<"_ATT_" value='"_$$ESC^NHINV(X)_"' />" D ADD(Y) Q
  1. . I $L(X)>1 D
  1. .. S Y="<"_ATT_" "
  1. .. F P=1:1 S TAG=$P("code^name^Z",U,P) Q:TAG="Z" I $L($P(X,U,P)) S Y=Y_TAG_"='"_$$ESC^NHINV($P(X,U,P))_"' "
  1. .. S Y=Y_"/>" D ADD(Y)
  1. D ADD("</immunization>")
  1. Q
  1. ;
  1. ADD(X) ; -- Add a line @NHIN@(n)=X
  1. S NHINI=$G(NHINI)+1
  1. S @NHIN@(NHINI)=X
  1. Q