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

VPRDJ0.m

Go to the documentation of this file.
VPRDJ0 ;SLC/MKB -- Serve VistA data as JSON cont ;6/25/12  16:11
 ;;1.0;VIRTUAL PATIENT RECORD;**2,5**;Sep 01, 2011;Build 21
 ;;Per VHA Directive 2004-038, this routine should not be modified.
 ;
 ; External References          DBIA#
 ; -------------------          -----
 ; ^DPT                         10035  <see VPRDJ0* for others>
 ;
 ; All tags expect DFN, VPRSTART, VPRSTOP, VPRMAX, VPRID, VPRTEXT
 ;
PATIENT ; -- Patient Registration
 D DPT1^VPRDJ00
 Q
 ;
PROBLEM ; -- Problem List
 I $G(VPRID) D GMPL1^VPRDJ02(VPRID) Q
 N ID,VPRSTS,VPRPROB,VPRN,X
 S VPRSTS=$G(FILTER("status")) ;default = all problems
 D LIST^GMPLUTL2(.VPRPROB,DFN,VPRSTS)
 S VPRN=0 F  S VPRN=$O(VPRPROB(VPRN)) Q:(VPRN<1)!(VPRI'<VPRMAX)  D
 . S X=$P(VPRPROB(VPRN),U,6) I X,(X<VPRSTART)!(X>VPRSTOP) Q  ;last updated
 . S ID=+VPRPROB(VPRN) D GMPL1^VPRDJ02(ID)
 Q
 ;
ALLERGY ; -- Allergies/Adverse Reactions
 N GMRAL,ID D EN1^GMRADPT
 I 'GMRAL Q  ;D NKA^VPRDJ02 Q
 I $G(VPRID) D GMRA1^VPRDJ02(VPRID) Q
 S ID=0 F  S ID=+$O(GMRAL(ID)) Q:ID<1  D GMRA1^VPRDJ02(ID) Q:VPRI'<VPRMAX
 Q
 ;
CONSULT ; -- Consult/Request Tracking
 N VPRN,VPRX,ID
 D OER^GMRCSLM1(DFN,"",VPRSTART,VPRSTOP,"")
 S VPRN=0 F  S VPRN=$O(^TMP("GMRCR",$J,"CS",VPRN)) Q:VPRN<1!(VPRN>VPRMAX)  S VPRX=$G(^(VPRN,0)) Q:$E(VPRX)="<"  D
 . I $G(VPRID),VPRID'=+VPRX Q
 . D GMRC1^VPRDJ03(+VPRX)
 K ^TMP("GMRCR",$J,"CS")
 Q
 ;
VITAL ; -- GMR Vital Measurements
 I $L($G(VPRID)) D GMV1^VPRDJ02(VPRID) Q
 N GMRVSTR,VPRIDT,VPRTYP,ID
 S GMRVSTR="BP;T;R;P;HT;WT;CVP;CG;PO2;PN"
 S GMRVSTR(0)=VPRSTART_U_VPRSTOP_U_VPRMAX_"^1"
 D EN1^GMRVUT0
 S VPRIDT=0 F  S VPRIDT=$O(^UTILITY($J,"GMRVD",VPRIDT)) Q:VPRIDT<1  D  Q:VPRI'<VPRMAX
 . S VPRTYP="" F  S VPRTYP=$O(^UTILITY($J,"GMRVD",VPRIDT,VPRTYP)) Q:VPRTYP=""  D
 .. S ID=$O(^UTILITY($J,"GMRVD",VPRIDT,VPRTYP,0)) D GMV1^VPRDJ02(ID)
 K ^UTILITY($J,"GMRVD")
 Q
 ;
LAB ; -- Lab Results
 N LRDFN,VPRSUB,VPRIDT,VPRN,VPRP,VPRACC,BEG,END,SUB,ORPK,ID,X
 S LRDFN=$G(^DPT(DFN,"LR")),VPRSUB=$G(FILTER("category"))
 S BEG=VPRSTART,END=VPRSTOP,VPRID=$G(VPRID),ORPK=""
 I $L(VPRID) D  ;reset for LR7OR1
 . I VPRID S ORPK=VPRID,VPRID=$P(VPRID,";",4,99) Q:VPRID=""  ;order
 . S VPRSUB=$P(VPRID,";"),VPRIDT=+$P(VPRID,";",2)
 . S:VPRIDT (BEG,END)=9999999-VPRIDT
 S SUB=VPRSUB I $L(SUB),"CH^MI"'[SUB S SUB="AP"
 D RR^LR7OR1(DFN,ORPK,BEG,END,SUB,,,VPRMAX)
 S VPRSUB="" F  S VPRSUB=$O(^TMP("LRRR",$J,DFN,VPRSUB)) Q:VPRSUB=""  D
 . S VPRIDT=0 F  S VPRIDT=$O(^TMP("LRRR",$J,DFN,VPRSUB,VPRIDT)) Q:VPRIDT<1  I $O(^(VPRIDT,0)) D  Q:VPRI'<VPRMAX
 .. I VPRSUB="MI"  S ID=VPRSUB_";"_VPRIDT D MI^VPRDJ06 Q
 .. I VPRSUB'="CH" S ID=VPRSUB_";"_VPRIDT D AP^VPRDJ06 Q
 .. D ACC^VPRDJ06 ;get chem accession data
 .. S VPRP=0 F  S VPRP=$O(^TMP("LRRR",$J,DFN,VPRSUB,VPRIDT,VPRP)) Q:VPRP<1  S X=+$G(^(VPRP)) D
 ... S VPRN=$$LRDN^LRPXAPIU(X) I $L(VPRID,";")>2,VPRN'=$P(VPRID,";",3) Q
 ... S ID=VPRSUB_";"_VPRIDT_";"_VPRN D CH1^VPRDJ06
 K ^TMP("LRRR",$J),^TMP("LRX",$J)
 Q
 ;
PROCEDUR ; -- Clinical Procedures
 N VPRN,VPRX,BEG,END,ID
 S BEG=VPRSTART,END=VPRSTOP
 I $G(VPRID) D  ;reset dates for VPRID only
 . N VPRMC,IEN,FILE,X
 . S IEN=+VPRID,FILE=+$P(VPRID,"(",2)  Q:FILE=702  Q:'FILE
 . D MEDLKUP^MCARUTL3(.VPRMC,FILE,IEN)
 . S X=$P(VPRMC,U,6) S:X (BEG,END)=X
 D MDPS1^VPRDJ03(DFN,BEG,END,VPRMAX)    ;gets ^TMP("MDHSP",$J)
 S VPRN=0 F  S VPRN=$O(^TMP("MDHSP",$J,VPRN)) Q:VPRN<1  S VPRX=$G(^(VPRN)) D
 . I $G(VPRID),+VPRID'=+$P(VPRX,U,2) Q  ;update 1 procedure
 . D MC1^VPRDJ03($G(VPRID))             ;uses VPRX
 K ^TMP("MDHSP",$J)
 Q
 ;
OBS ; -- Clinical Observations (CLiO)
 N VPRCLIO,VPRN,ID,X
 I $L($G(VPRID)) D MDC1^VPRDJ03(VPRID) Q
 D QRYPT^VPRDMDC("VPRCLIO",DFN,VPRSTART,VPRSTOP) ;all [verified] observations
 S VPRN=0 F  S VPRN=$O(VPRCLIO(VPRN)) Q:(VPRN<1)!(VPRI'<VPRMAX)  D
 . S ID=$G(VPRCLIO(VPRN)) ;GUID
 . D MDC1^VPRDJ03(ID)
 Q
 ;
ORDER ; -- Order Entry
 N ORLIST,VPRN,DAD,ID,X,X3,X4
 I $G(VPRID) S ORLIST=$H D OR1^VPRDJ01(VPRID) G ORQ
 D EN^ORQ1(DFN_";DPT(",,6,,VPRSTART,VPRSTOP,,,,1)
 S VPRN=0 F  S VPRN=$O(^TMP("ORR",$J,ORLIST,VPRN)) Q:VPRN<1  S ID=$G(^(VPRN)) D  Q:VPRI'<VPRMAX
 . Q:$D(^TMP("ORGOTIT",$J,+ID))  Q:$P(ID,";",2)>1  S ID=+ID    ;actions
 . S X3=$G(^OR(100,ID,3)),X4=$G(^(4))
 . Q:$P(X3,U,3)=13  I X4["P",$P(X3,U,3)=1!($P(X3,U,3)=12) Q  ;cancelled
 . S DAD=+$P(X3,U,9) I DAD D:'$D(^TMP("ORGOTIT",$J,DAD)) OR1^VPRDJ01(DAD) Q
 . D OR1^VPRDJ01(ID)
ORQ ; end
 K ^TMP("ORR",$J),^TMP("ORGOTIT",$J)
 Q
 ;
TREATMEN ; -- Nursing Treatments (orders)
 N ORLIST,ORDG,VPRN,ID,X,X3,X4
 I $G(VPRID) S ORLIST=$H D NTX1^VPRDJ01(VPRID) G TXQ
 S ORDG=+$O(^ORD(100.98,"B","NTX",0))
 D EN^ORQ1(DFN_";DPT(",ORDG,6,,VPRSTART,VPRSTOP,,,,1)
 S VPRN=0 F  S VPRN=$O(^TMP("ORR",$J,ORLIST,VPRN)) Q:VPRN<1  S ID=$G(^(VPRN)) D  Q:VPRI'<VPRMAX
 . Q:$D(^TMP("ORGOTIT",$J,+ID))  Q:$P(ID,";",2)>1  S ID=+ID  ;actions
 . S X3=$G(^OR(100,ID,3)),X4=$G(^(4))
 . Q:$P(X3,U,3)=13  I X4["P",$P(X3,U,3)=1!($P(X3,U,3)=12) Q  ;cancelled
 . D NTX1^VPRDJ01(ID)
TXQ ; end
 K ^TMP("ORR",$J),^TMP("ORGOTIT",$J)
 Q
 ;
MED ; -- Pharmacy
 N ORDIALOG I $G(VPRID),$D(^OR(100,+VPRID)) D PS1^VPRDJ05(VPRID) Q       ;get 1 order
 N TYPE,ORDG,ORVP,ORLIST,VPRN,ORLIST,X3,X4,DAD,ID
 S TYPE=$G(FILTER("vaType")) S:$L(TYPE) TYPE=$S(TYPE="N":"NV",TYPE="V":"IV",1:TYPE)_" "
 S ORDG=+$O(^ORD(100.98,"B",TYPE_"RX",0)),ORVP=DFN_";DPT("
 D EN^ORQ1(ORVP,ORDG,6,,VPRSTART,VPRSTOP)
 K ^TMP("VPROR",$J) S VPRN=0
 F  S VPRN=$O(^TMP("ORR",$J,ORLIST,VPRN)) Q:VPRN<1  S ID=$G(^(VPRN)) D  Q:VPRI'<VPRMAX
 . Q:$D(^TMP("VPROR",$J,+ID))  Q:$P(ID,";",2)>1  S ID=+ID
 . S X3=$G(^OR(100,ID,3)),X4=$G(^(4))
 . Q:$P(X3,U,3)=13  I X4["P",$P(X3,U,3)=1!($P(X3,U,3)=12) Q  ;cancelled
 . S DAD=$P(X3,U,9) I DAD Q:$D(^TMP("VPROR",$J,DAD))  S ID=DAD
 . D PS1^VPRDJ05(ID) S ^TMP("VPROR",$J,ID)=""
 K ^TMP("VPROR",$J),^TMP("ORR",$J),^TMP("ORGOTIT",$J),^TMP($J,"PSOI")
 Q
 ;
PTF ; -- Patient Treatment File
 N VPRIDT,ID
 D PTF^VPRDJ09 ;sort ^PXRMINDX into ^TMP("VPRPX",$J,IDT)
 I $G(VPRID),VPRID'=+VPRID D PTFA^VPRDJ04A(VPRID) Q
 S VPRIDT=0 F  S VPRIDT=$O(^TMP("VPRPX",$J,VPRIDT)) Q:VPRIDT<1  D  Q:VPRI'<VPRMAX
 . S ID="" F  S ID=$O(^TMP("VPRPX",$J,VPRIDT,ID)) Q:ID=""  D
 .. I VPRID=+VPRID,+ID'=+VPRID Q  ;single PTF record only
 .. D PTF1^VPRDJ04A
 K ^TMP("VPRPX",$J)
 Q
 ;
FACTOR   D PX^VPRDJ09(9000010.23) Q   ; -- PCE Health Factors
IMMUNIZA D PX^VPRDJ09(9000010.11) Q   ; -- PCE Immunizations
EXAM     D PX^VPRDJ09(9000010.13) Q   ; -- PCE Exams
CPT      D PX^VPRDJ09(9000010.18) Q   ; -- PCE CPT
EDUCATIO D PX^VPRDJ09(9000010.16) Q   ; -- PCE Patient Education
POV      D PX^VPRDJ09(9000010.07) Q   ; -- PCE Purpose of Visit (POV)
SKIN     D PX^VPRDJ09(9000010.12) Q   ; -- PCE Skin Tests
 ;
IMAGE ; -- Radiology/Nuclear Medicine
 D EN1^RAO7PC1(DFN,VPRSTART,VPRSTOP,VPRMAX_"P")
 I $G(VPRID) D RA1^VPRDJ07(VPRID) G IMQ
 N ID S ID=""
 F  S ID=$O(^TMP($J,"RAE1",DFN,ID)) Q:ID=""  D RA1^VPRDJ07(ID)  Q:VPRI'<+VPRMAX
IMQ ; end
 K ^TMP($J,"RAE1")
 Q
 ;
APPOINTM ; -- Scheduling/Appointment Mgt
 N VPRX,VPRNUM,VPRDT,X,VPRA,ID
 S VPRX(1)=VPRSTART_";"_VPRSTOP,VPRX(4)=DFN,ID=$G(VPRID)
 S VPRX("FLDS")="1;2;3;6;9;10;11;13",VPRX("SORT")="P"
 I $L(ID) G:$E(ID)="H" DGS^VPRDJ04 D  Q
 . S VPRDT=$P(ID,";",2),VPRX(1)=$P(ID,";",2)_";"_$P(ID,";",2)
 . S VPRX(2)=$P(ID,";",3)
 . S VPRNUM=$$SDAPI^SDAMA301(.VPRX)
 . D:VPRNUM>0 SDAM1^VPRDJ04
 . K ^TMP($J,"SDAMA301",DFN)
 ; appointments
 S VPRX(3)="R;I;NS;NSR;NT" ;no cancelled appt's
 S VPRNUM=$$SDAPI^SDAMA301(.VPRX),VPRDT=0
 F  S VPRDT=$O(^TMP($J,"SDAMA301",DFN,VPRDT)) Q:VPRDT<1  D  Q:VPRI'<VPRMAX
 . S X=$P($G(^TMP($J,"SDAMA301",DFN,VPRDT)),U,3)
 . ;I VPRDT<DT,$P(X,";")'["NS" Q   ;no prior kept appt's
 . D SDAM1^VPRDJ04
 K ^TMP($J,"SDAMA301",DFN)
 Q
 ;
SURGERY ; -- Surgery
 I $G(VPRID) D SR1^VPRDJ07(VPRID) Q
 Q:'$L($T(LIST^SROESTV))
 N SHOWADD S SHOWADD=1 ;to omit leading '+' with note titles
 N VPRN,VPRY,ID D LIST^SROESTV(.VPRY,DFN,VPRSTART,VPRSTOP,VPRMAX,1)
 S VPRN=0 F  S VPRN=$O(@VPRY@(VPRN)) Q:VPRN<1  D
 . S ID=+$G(@VPRY@(VPRN)) D:ID SR1^VPRDJ07(ID)
 K @VPRY
 Q
 ;
DOCUMENT ; -- Text Integration Utilities
 N VPRC,CLS,VPRS,CTXT,VPRY,VPRN,VPRX,ID
 I $L($G(VPRID)) D TIU1^VPRDJ08(VPRID) Q
 N CLASS,SUBCLASS,STATUS
 D SETUP^VPRDJ08 ;define search criteria
 F VPRC=1:1:$L(CLASS,U) S CLS=$P(CLASS,U,VPRC) D  Q:VPRI'<VPRMAX
 . I CLS="CP" D CP^VPRDJ08A(DFN,VPRSTART,VPRSTOP,VPRMAX) Q
 . I CLS="RA" D RA^VPRDJ08A(DFN,VPRSTART,VPRSTOP,VPRMAX) Q
 . I CLS="LR" D LR^VPRDJ08A(DFN,VPRSTART,VPRSTOP,VPRMAX) Q
 . ; TIU document classes, by sig status
 . F VPRS=1:1:$L(STATUS,U) S CTXT=$P(STATUS,U,VPRS) D  Q:VPRI'<VPRMAX
 .. D CONTEXT^TIUSRVLO(.VPRY,CLS,CTXT,DFN,VPRSTART,VPRSTOP,,,,1)
 .. S VPRN=0 F  S VPRN=$O(@VPRY@(VPRN)) Q:VPRN<1  D  Q:VPRI'<VPRMAX
 ... S VPRX=$G(@VPRY@(VPRN)) Q:'$$MATCH^VPRDJ08(VPRX,CTXT)
 ... Q:$D(^TMP("VPRD",$J,+VPRX))  ;already included
 ... D EN1^VPRDJ08(VPRX,CLS)
 .. K @VPRY
 Q
 ;
VISIT ; -- Visits
 I $L($G(VPRID)) D VSIT1^VPRDJ04(VPRID) Q
 N VPRDT,VPRLOC,END,ID
 N VPRADMIT S VPRADMIT=+$G(^DPT(DFN,.105)) ;current admission
 S END=VPRSTOP I VPRSTOP,VPRSTOP'["." S END=VPRSTOP_".24" ;assume end of day
 S VPRDT=END F  S VPRDT=$O(^AUPNVSIT("AET",DFN,VPRDT),-1)  Q:VPRDT<VPRSTART  D  Q:VPRI'<VPRMAX
 . S VPRLOC=0 F  S VPRLOC=$O(^AUPNVSIT("AET",DFN,VPRDT,VPRLOC)) Q:VPRLOC<1  D
 .. S ID=0 F  S ID=$O(^AUPNVSIT("AET",DFN,VPRDT,VPRLOC,"P",ID)) Q:ID<1  D VSIT1^VPRDJ04(ID)
 ; kill VPRADMIT in VSIT1 if adm is included, but add unless filtered
 I $G(VPRADMIT),VPRMAX'<9999,VPRSTART'>1410102 D VSIT1^VPRDJ04("H"_VPRADMIT)
 Q
 ;
VPR ; -- VPR Patient Objects
 D VPR^VPRDJ02($G(TYPE))
 Q
 ;
MH ; -- Mental Health
 I $L($T(MH^VPRDJ09M)) D MH^VPRDJ09M
 Q