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

NHINVPS.m

Go to the documentation of this file.
  1. NHINVPS ;SLC/MKB -- Pharmacy extract
  1. ;;1.0;NHIN;**1**;Dec 01, 2009;Build 11
  1. ;
  1. ; External References DBIA#
  1. ; ------------------- -----
  1. ; DIQ 2056
  1. ; PSOORRL,^TMP("PS",$J) 2400
  1. ; PSS50,^TMP($J 4483
  1. ;
  1. ; ------------ Get medications from VistA ------------
  1. ;
  1. EN(DFN,BEG,END,MAX,ID) ; -- find patient's meds
  1. N PS0,NHI,NHITM,IV K ^TMP("PS",$J)
  1. S DFN=+$G(DFN) Q:DFN<1
  1. S BEG=$G(BEG,1410101),END=$G(END,9999998),MAX=$G(MAX,999999)
  1. ;
  1. ; get one med
  1. I $G(ID) D D:$D(NHITM)>9 XML(.NHITM) K ^TMP("PS",$J) Q
  1. . I ID["N" D NVA^NHINVPSO(ID,.NHITM) Q
  1. . I ID["O",(ID'["P")&(ID'["S") D RX^NHINVPSO(ID,.NHITM) Q
  1. . D OEL^PSOORRL(DFN,ID)
  1. . I ID["O",(ID["P")!(ID["S") D PEN1^NHINVPSO(ID,.NHITM) Q
  1. . S IV=$S(ID["V":1,$G(^TMP("PS",$J,"B",0)):1,1:0)
  1. . D @($S(IV:"IV1",1:"IN1")_"^NHINVPSI(ID,.NHITM)")
  1. ;
  1. ; get all meds
  1. D OCL^PSOORRL(DFN,BEG,END)
  1. S NHI=0 F S NHI=$O(^TMP("PS",$J,NHI)) Q:NHI<1!(NHI>MAX) S PS0=$G(^(NHI,0)) D I $D(NHITM)>9 D XML(.NHITM)
  1. . S ID=$P(PS0,U) K NHITM
  1. . I ID["N" D NVA^NHINVPSO(ID,.NHITM) Q
  1. . I ID["O" D RX^NHINVPSO(ID,.NHITM) Q
  1. . S IV=$S(ID["V":1,$G(^TMP("PS",$J,NHI,"B",0)):1,1:0)
  1. . D @($S(IV:"IV",1:"IN")_"^NHINVPSI(ID,.NHITM)")
  1. K ^TMP("PS",$J)
  1. Q
  1. ;
  1. NDF(DRUG,I) ; -- Set NDF data for dispense DRUG ien
  1. N VUID,X
  1. S DRUG=+$G(DRUG) Q:'DRUG
  1. D NDF^PSS50(DRUG,,,,,"NDF") S I=+$G(I)+1
  1. S MED("product",I)=DRUG_U_$G(^TMP($J,"NDF",DRUG,.01))_"^^D" ;Drug
  1. S X=$G(^TMP($J,"NDF",DRUG,20)),VUID=$$GET1^DIQ(50.6,+X_",",99.99)
  1. S MED("product",I,"G")=X_U_VUID ;VA Generic
  1. S X=$G(^TMP($J,"NDF",DRUG,22)),VUID=$$GET1^DIQ(50.68,+X_",",99.99)
  1. S MED("product",I,"P")=X_U_VUID ;VA Product
  1. S MED("product",I,"C")=$P($G(^TMP($J,"NDF",+DRUG,25)),U,3) ;display name
  1. K ^TMP($J,"NDF",DRUG)
  1. Q
  1. ;
  1. ; ------------ Return data to middle tier ------------
  1. ;
  1. XML(MED) ; -- Return patient meds as XML
  1. N ATT,X,Y,I,NAMES
  1. D ADD("<med>") S NHINTOTL=$G(NHINTOTL)+1
  1. S ATT="" F S ATT=$O(MED(ATT)) Q:ATT="" D I $L(Y) D ADD(Y)
  1. . I $O(MED(ATT,0)) D S Y="" Q ;multiples
  1. .. D ADD("<"_ATT_"s>")
  1. .. S I=0 F S I=$O(MED(ATT,I)) Q:I<1 D
  1. ... S X=$G(MED(ATT,I)),NAMES=""
  1. ... I ATT="dose" S NAMES="dose^units^unitsPerDose^noun^route^schedule^duration^conjunction^doseStart^doseStop^Z"
  1. ... I ATT="fill" S NAMES="fillDate^fillRouting^releaseDate^fillQuantity^fillDaysSupply^partial^Z"
  1. ... I ATT="product" S NAMES="code^name^vuid^role^concentration^Z"
  1. ... S Y="<"_ATT_" "_$$LOOP_$S(ATT'="product":"/>",1:">") D ADD(Y)
  1. ... Q:ATT'="product"
  1. ... S X=$G(MED(ATT,I,"C")) I $L(X) S Y="<class "_$$LOOP_"/>" D ADD(Y)
  1. ... S X=$G(MED(ATT,I,"G")) I $L(X) S Y="<vaGeneric "_$$LOOP_"/>" D ADD(Y)
  1. ... S X=$G(MED(ATT,I,"P")) I $L(X) S Y="<vaProduct "_$$LOOP_"/>" D ADD(Y)
  1. ... D ADD("</product>")
  1. .. D ADD("</"_ATT_"s>")
  1. . S X=$G(MED(ATT)),Y="" Q:'$L(X)
  1. . I ATT="sig"!(ATT?1"ptIn"1.A) S Y="<"_ATT_" xml:space='preserve'>"_$$ESC^NHINV(X)_"</"_ATT_">" Q
  1. . I X'["^" S Y="<"_ATT_" value='"_$$ESC^NHINV(X)_"' />" Q
  1. . I $L(X)>1 S NAMES="code^name^Z",Y="<"_ATT_" "_$$LOOP_"/>"
  1. D ADD("</med>")
  1. Q
  1. ;
  1. LOOP() ; -- build sub-items string from NAMES and X
  1. N STR,P,TAG S STR=""
  1. F P=1:1 S TAG=$P(NAMES,U,P) Q:TAG="Z" I $L($P(X,U,P)) S STR=STR_TAG_"='"_$$ESC^NHINV($P(X,U,P))_"' "
  1. Q STR
  1. ;
  1. ADD(X) ; Add a line @NHIN@(n)=X
  1. S NHINI=$G(NHINI)+1
  1. S @NHIN@(NHINI)=X
  1. Q