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

VPRDJ03.m

Go to the documentation of this file.
  1. VPRDJ03 ;SLC/MKB -- Consults,ClinProcedures,CLiO ;6/25/12 16:11
  1. ;;1.0;VIRTUAL PATIENT RECORD;**2,7**;Sep 01, 2011;Build 3
  1. ;;Per VHA Directive 2004-038, this routine should not be modified.
  1. ;
  1. ; External References DBIA#
  1. ; ------------------- -----
  1. ; ^SC 10040
  1. ; ^TIU(8925.1 5677
  1. ; ^VA(200 10060
  1. ; %DT 10003
  1. ; DILFD 2055
  1. ; DIQ 2056
  1. ; GMRCAPI 6082
  1. ; GMRCGUIB 2980
  1. ; GMRCSLM1,^TMP("GMRCR" 2740
  1. ; MCARUTL3 3280
  1. ; MDPS1,^TMP("MDHSP" 4230
  1. ; ORX8 2467
  1. ; TIULQ 2693
  1. ; TIUSRVLO 2834
  1. ; XLFSTR 10104
  1. ; XUAF4 2171
  1. ;
  1. ; All tags expect DFN, ID, [VPRSTART, VPRSTOP, VPRMAX, VPRTEXT]
  1. ;
  1. GMRC1(ID) ; -- consult/request VPRX=^TMP("GMRCR",$J,"CS",VPRN,0)
  1. N CONS,ORDER,VPRD,X0,X,VPRJ,VPRTIU,NT,VPRSN
  1. S CONS("localId")=+VPRX,CONS("uid")=$$SETUID^VPRUTILS("consult",DFN,+VPRX)
  1. S CONS("dateTime")=$$JSONDT^VPRUTILS($P(VPRX,U,2))
  1. S CONS("statusName")=$P(VPRX,U,3),CONS("service")=$P(VPRX,U,4)
  1. S CONS("consultProcedure")=$P(VPRX,U,5)
  1. I $P(VPRX,U,6)="*" S CONS("interpretation")="SIGNIFICANT FINDINGS"
  1. S CONS("typeName")=$P(VPRX,U,7),CONS("category")=$P(VPRX,U,9)
  1. S ORDER=+$P(VPRX,U,8),CONS("orderName")=$P($$OI^ORX8(ORDER),U,2)
  1. S CONS("orderUid")=$$SETUID^VPRUTILS("order",DFN,ORDER)
  1. ;D DOCLIST^GMRCGUIB(.VPRD,+VPRX) S X0=$G(VPRD(0)) ;=^GMR(123,ID,0)
  1. D GET^GMRCAPI(.VPRD,+VPRX) S X0=$G(VPRD(0)) ;=^GMR(123,ID,0)
  1. S X=$P(X0,U,9) S:$L(X) CONS("urgency")=X
  1. S X=+$P(X0,U,14) I X D ;ordering provider
  1. . S CONS("providerUid")=$$SETUID^VPRUTILS("user",,X)
  1. . S CONS("providerName")=$P($G(^VA(200,X,0)),U)
  1. I $O(VPRD(20,0)) M VPRSN=VPRD(20) S CONS("reason")=$$STRING^VPRD(.VPRSN)
  1. I $D(VPRD(30))!$D(VPRD(30.1)) D
  1. . S:$D(VPRD(30)) CONS("provisionalDx","name")=VPRD(30)
  1. . S:$D(VPRD(30.1)) CONS("provisionalDx","code")=$P(VPRD(30.1),U),CONS("provisionalDx","system")=$P(VPRD(30.1),U,3)
  1. S VPRJ=0 F S VPRJ=$O(VPRD(50,VPRJ)) Q:VPRJ<1 S X=$G(VPRD(50,VPRJ)) D
  1. . Q:'$D(@(U_$P(X,";",2)_+X_")")) ;text deleted
  1. . S CONS("results",VPRJ,"uid")=$$SETUID^VPRUTILS("document",DFN,+X)
  1. . D EXTRACT^TIULQ(+X,"VPRTIU",,.01)
  1. . S CONS("results",VPRJ,"localTitle")=$G(VPRTIU(+X,.01,"E"))
  1. . S NT=$$GET1^DIQ(8925.1,+$G(VPRTIU(+X,.01,"I"))_",",1501)
  1. . S:$L(NT) CONS("results",VPRJ,"nationalTitle")=NT
  1. S X=$P(X0,U,21),X=$S(X:$$STA^XUAF4(X)_U_$P($$NS^XUAF4(X),U),1:$$FAC^VPRD)
  1. D FACILITY^VPRUTILS(X,"CONS")
  1. D ADD^VPRDJ("CONS","consult")
  1. Q
  1. ;
  1. MDPS1(DFN,BEG,END,MAX) ; -- perform CP search (scope variables)
  1. N MCARCODE,MCARDT,MCARPROC,MCESKEY,MCESSEC,MCFILE,MDC,MDIMG,RES
  1. S BEG=$G(BEG,1410101),END=$G(END,4141015),MAX=$G(MAX,9999)
  1. K ^TMP("MDHSP",$J) S RES=""
  1. D EN1^MDPS1(.RES,DFN,BEG,END,MAX,"",0) ;RES=^TMP("MDHSP",$J)
  1. Q
  1. ;
  1. MC1(ID) ; -- clinical procedure VPRX=^TMP("MDHSP",$J,VPRN)
  1. N X,Y,%DT,DATE,RTN,GBL,CONS,TIUN,VPRD,X0,PROC,VPRT,LOC,FAC
  1. S RTN=$P(VPRX,U,3,4) Q:RTN="PRPRO^MDPS4" ;skip non-CP items
  1. S X=$P(VPRX,U,6),%DT="TXS" D ^%DT Q:Y'>0 S DATE=Y
  1. S GBL=+$P(VPRX,U,2)_";"_$S(RTN="PR702^MDPS1":"MDD(702,",1:$$ROOT^VPRDMC(DFN,$P(VPRX,U,11),DATE))
  1. Q:'GBL I $G(ID),ID'=GBL Q ;unknown, or not requested
  1. ;
  1. S CONS=+$P(VPRX,U,13) D:CONS DOCLIST^GMRCGUIB(.VPRD,CONS) S X0=$G(VPRD(0)) ;=^GMR(123,ID,0)
  1. S TIUN=+$P(VPRX,U,14) S:TIUN TIUN=TIUN_U_$$RESOLVE^TIUSRVLO(TIUN)
  1. S PROC("localId")=GBL,PROC("category")="CP"
  1. S PROC("uid")=$$SETUID^VPRUTILS("procedure",DFN,GBL)
  1. S PROC("name")=$P(VPRX,U),PROC("dateTime")=$$JSONDT^VPRUTILS(DATE)
  1. S X=$P(VPRX,U,7) S:$L(X) PROC("interpretation")=X
  1. S PROC("kind")="Procedure"
  1. I CONS,X0 D
  1. . N VPRJ S PROC("requested")=$$JSONDT^VPRUTILS(+X0)
  1. . S PROC("consultUid")=$$SETUID^VPRUTILS("consult",DFN,CONS)
  1. . S PROC("orderUid")=$$SETUID^VPRUTILS("order",DFN,+$P(X0,U,3))
  1. . S PROC("statusName")=$$EXTERNAL^DILFD(123,8,,$P(X0,U,12))
  1. . S VPRJ=0 F S VPRJ=$O(VPRD(50,VPRJ)) Q:VPRJ<1 S X=+$G(VPRD(50,VPRJ)) D
  1. .. D NOTE(X)
  1. .. S:'TIUN TIUN=X_U_$$RESOLVE^TIUSRVLO(X)
  1. I TIUN D
  1. . S X=$P(TIUN,U,5) I X D
  1. .. S PROC("providers",1,"providerUid")=$$SETUID^VPRUTILS("user",,+X)
  1. .. S PROC("providers",1,"providerName")=$P(X,";",3)
  1. . S:$P(TIUN,U,11) PROC("hasImages")="true"
  1. . K VPRT D EXTRACT^TIULQ(+TIUN,"VPRT",,".03;.05;1211",,,"I")
  1. . S X=+$G(VPRT(+TIUN,.03,"I")),PROC("encounterUid")=$$SETUID^VPRUTILS("visit",DFN,X)
  1. . S LOC=+$G(VPRT(+TIUN,1211,"I")) I LOC S LOC=LOC_U_$P($G(^SC(LOC,0)),U)
  1. . E S X=$P(TIUN,U,6) S:$L(X) LOC=+$O(^SC("B",X,0))_U_X
  1. . S:LOC PROC("locationUid")=$$SETUID^VPRUTILS("location",,+LOC),PROC("locationName")=$P(LOC,U,2),FAC=$$FAC^VPRD(+LOC)
  1. . I '$D(PROC("statusName")) S X=+$G(VPRT(+TIUN,.05,"I")),PROC("statusName")=$S(X<6:"PARTIAL RESULTS",1:"COMPLETE")
  1. . I '$G(PROC("results",+TIUN)) D NOTE(+TIUN)
  1. ; if no consult or note/visit ...
  1. S:'$D(PROC("statusName")) PROC("statusName")="COMPLETE"
  1. I '$D(FAC) S X=$P(X0,U,21),FAC=$S(X:$$STA^XUAF4(X)_U_$P($$NS^XUAF4(X),U),1:$$FAC^VPRD)
  1. D FACILITY^VPRUTILS(FAC,"PROC")
  1. D ADD^VPRDJ("PROC","procedure")
  1. Q
  1. ;
  1. NOTE(DA) ; -- add TIU note info
  1. N VPRT,NT,TEXT
  1. D EXTRACT^TIULQ(DA,"VPRT",,.01)
  1. S PROC("results",DA,"uid")=$$SETUID^VPRUTILS("document",+$G(DFN),DA)
  1. S PROC("results",DA,"localTitle")=$G(VPRT(DA,.01,"E"))
  1. S NT=$$GET1^DIQ(8925.1,+$G(VPRT(DA,.01,"I"))_",",1501)
  1. S:$L(NT) PROC("results",DA,"nationalTitle")=NT
  1. Q
  1. ;
  1. MDC1(ID) ; -- clinical observation
  1. N GUID,CLIO,VPRC,VPRT,LOC,FAC,I,X,Y
  1. S GUID=$G(ID) Q:GUID="" ;invalid GUID
  1. D QRYOBS^VPRDMDC("VPRC",GUID) Q:'$D(VPRC) ;doesn't exist
  1. Q:$L($G(VPRC("PARENT_ID","E"))) ;PARENT also in list
  1. ;
  1. S CLIO("localId")=GUID,CLIO("uid")=$$SETUID^VPRUTILS("obs",DFN,GUID)
  1. S X=$G(VPRC("TERM_ID","I")) S:X CLIO("typeVuid")="urn:va:vuid:"_X
  1. S CLIO("typeCode")="urn:va:clioterminology:"_$G(VPRC("TERM_ID","GUID"))
  1. S CLIO("typeName")=$G(VPRC("TERM_ID","E"))
  1. S CLIO("result")=$G(VPRC("SVALUE","E"))
  1. S X=$G(VPRC("UNIT_ID","ABBV")) S:$L(X) CLIO("units")=X
  1. S X=$G(VPRC("ENTERED_DATE_TIME","I")),CLIO("entered")=$$JSONDT^VPRUTILS(X)
  1. S X=$G(VPRC("OBSERVED_DATE_TIME","I")),CLIO("observed")=$$JSONDT^VPRUTILS(X)
  1. D QRYTYPES^VPRDMDC("VPRT")
  1. F I=3,5 S X=$G(VPRT(I,"XML")) I $L($G(VPRC(X,"E"))) D
  1. . S Y=VPRT(I,"NAME"),Y=$S(Y="LOCATION":"bodySite",1:$$LOW^XLFSTR(Y))
  1. . S CLIO(Y_"Code")=VPRC(X,"I"),CLIO(Y_"Name")=VPRC(X,"E")
  1. F I=4,6,7 S X=$G(VPRT(I,"XML")) I $L($G(VPRC(X,"E"))) D
  1. . S CLIO("qualifiers",I,"type")=$$LOW^XLFSTR(VPRT(I,"NAME"))
  1. . S CLIO("qualifiers",I,"code")=VPRC(X,"I")
  1. . S CLIO("qualifiers",I,"name")=VPRC(X,"E")
  1. S X=$G(VPRC("RANGE","E")) I $L(X) D
  1. . S Y=$S(X="Out of Bounds Low":"<",X="Out of Bounds High":">",1:$E(X))
  1. . S CLIO("interpretationCode")="urn:hl7:observation-interpretation:"_Y
  1. . S CLIO("interpretationName")=$S(X="<":"Low off scale",X=">":"High off scale",1:X)
  1. ; X=$G(VPRC("STATUS","E")) S:$L(X) CLIO("resultStatus")=$S(X="unverified":"active",1:"complete")
  1. I $D(VPRC("SUPP_PAGE")) D ;add set info
  1. . S CLIO("setID")=$G(VPRC("SUPP_PAGE","GUID"))
  1. . S CLIO("setName")=$G(VPRC("SUPP_PAGE","DISPLAY_NAME"))
  1. . S X=$G(VPRC("SUPP_PAGE","TYPE")) S:$L(X) CLIO("setType")=X
  1. . S X=$G(VPRC("SUPP_PAGE","ACTIVATED_DATE_TIME")) S:X CLIO("setStart")=$$JSONDT^VPRUTILS(X)
  1. . S X=$G(VPRC("SUPP_PAGE","DEACTIVATED_DATE_TIME")) S:X CLIO("setStop")=$$JSONDT^VPRUTILS(X)
  1. S CLIO("statusCode")="urn:va:observation-status:complete",CLIO("statusName")="complete"
  1. S LOC=$G(VPRC("HOSPITAL_LOCATION_ID","I")),FAC=$$FAC^VPRD(LOC)
  1. S CLIO("locationUid")=$$SETUID^VPRUTILS("location",,LOC)
  1. S CLIO("locationName")=$G(VPRC("HOSPITAL_LOCATION_ID","E"))
  1. D FACILITY^VPRUTILS(FAC,"CLIO")
  1. S X=$G(VPRC("COMMENT","E")) S:$L(X) CLIO("comment")=X
  1. D ADD^VPRDJ("CLIO","obs")
  1. Q