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

GMVGETD.m

Go to the documentation of this file.
  1. GMVGETD ;HOIFO/YH,FT-EXTRACTS WARD/ROOM-BED/PT AND PT VITALS ;5/10/07
  1. ;;5.0;GEN. MED. REC. - VITALS;**3,22,23**;Oct 31, 2002;Build 25
  1. ;
  1. ; This routine uses the following IAs:
  1. ; #1380 - ^DG(405.4 references (controlled)
  1. ; #1377 - ^DIC(42 references (controlled)
  1. ; #4290 - ^PXRMINDX global (controlled)
  1. ; #10035 - FILE 2 references (supported)
  1. ; #10039 - FILE 42 references (supported)
  1. ; #10103 - ^XLFDT calls (supported)
  1. ; #10104 - ^XLFSTR calls (supported)
  1. ;
  1. ; This routine supports the following IAs:
  1. ; #4416 - GMV EXTRACT REC RPC is called at GETVM (private)
  1. ; #4358 - GMV LATEST VM RPC is called at GETLAT (private)
  1. ;
  1. GETVM(RESULT,GMRVDATA) ;GMV EXTRACT REC [RPC entry point]
  1. ; Returns data particular patient and date/time range in RESULT
  1. ; GMRVDATA = DFN^END DATE VITAL TAKEN^VITAL TYPE (OPTIONAL)^START DATE VITAL TAKEN
  1. N DFN,GMVEND,GMVSTART,GMVTYPE
  1. S DFN=+$P(GMRVDATA,U,1),GMVEND=+$P(GMRVDATA,U,2),GMVSTART=$P(GMRVDATA,U,4),GMVTYPE=$P(GMRVDATA,U,3)
  1. K ^TMP($J,"GRPC")
  1. S:GMVEND="" GMVEND=$$NOW^XLFDT()
  1. I $P(GMVEND,".",2)'>0 S GMVEND=$P(GMVEND,".",1)_".235959"
  1. I GMVSTART="" S GMVSTART=0
  1. S:GMVTYPE'="" GMVTYPE(1)=$P(^GMRD(120.51,$O(^GMRD(120.51,"C",GMVTYPE,0)),0),"^")
  1. D EN1^GMVGETD1
  1. I '$D(^TMP($J,"GRPC")) S ^TMP($J,"GRPC",1)="0^NO "_$S(GMVTYPE'="":GMVTYPE(1),1:"VITALS/MEASUREMENTS ")_" ENTERED WITHIN THIS PERIOD"
  1. S RESULT=$NA(^TMP($J,"GRPC"))
  1. K GMRDT,GMRVARY,GMRVITY,GMRVX,GMRZZ
  1. Q
  1. GETLAT(RESULT,GMRDFN) ;GMV LATEST VM [RPC entry point]
  1. ; RETURNS THE LATEST VITALS/MEASUREMENTS FOR A GIVEN PATIENT(GMRDFN)
  1. ; IN RESULT ARRAY.
  1. K ^TMP($J,"GRPC") D EN1^GMVLAT0(GMRDFN)
  1. S RESULT=$NA(^TMP($J,"GRPC"))
  1. Q
  1. WARDLOC(RESULT,DUMMY) ;GMV WARD LOCATION [RPC entry point]
  1. ;RETURNS MAS WARD LOCATIONS IN RESULT ARRAY
  1. K ^TMP($J,"GWARD"),^TMP($J,"GMRV") N GMRWARD,GINDEX,GN,GMR
  1. S DUMMY=$G(DUMMY)
  1. S DUMMY=$$UP^XLFSTR(DUMMY)
  1. S DUMMY=$S(DUMMY="P":"P",1:"A")
  1. D LIST^DIC(42,"","","","*","","","","I '$$INACT42^GMVUT2(+Y)",,"^TMP($J,""GMRV"")")
  1. S GINDEX=+$P($G(^TMP($J,"GMRV","DILIST",0)),"^")
  1. I GINDEX>0 D
  1. . S (GMR,GN)=0 F S GN=$O(^TMP($J,"GMRV","DILIST",1,GN)) Q:GN'>0 D
  1. . . S GMRWARD(1)=^TMP($J,"GMRV","DILIST",1,GN),GMRWARD=+^TMP($J,"GMRV","DILIST",2,GN)
  1. . . I DUMMY="P" D Q
  1. . . . I $O(^DPT("CN",GMRWARD(1),0))>0 S GMR=GMR+1,^TMP($J,"GWARD",GMR)=GMRWARD_"^"_GMRWARD(1)_U_^DIC(42,GMRWARD,44)
  1. . . I DUMMY="A" D
  1. . . . S GMR=GMR+1,^TMP($J,"GWARD",GMR)=GMRWARD_"^"_GMRWARD(1)_U_^DIC(42,GMRWARD,44)
  1. K ^TMP($J,"GMRV") S RESULT=$NA(^TMP($J,"GWARD"))
  1. Q
  1. WARDPT(RESULT,GMRWARD) ;GMV WARD PT [RPC entry point]
  1. ;RETURNS A LIST OF PATIENTS ADMITTED TO A GIVEN MAS WARD(GMRWARD) IN RESULT ARRAY.
  1. Q:'$D(^DPT("CN",GMRWARD))
  1. N OUT,GN,DFN,DFN1,GMVPAT
  1. K ^TMP($J,"GMRPT")
  1. S (GN,DFN)=0 F S DFN=$O(^DPT("CN",GMRWARD,DFN)) Q:DFN'>0 D
  1. . I $D(^DPT(DFN,0)) D
  1. . . S GMVPAT=""
  1. . . D PTINFO^GMVUTL3(.GMVPAT,DFN)
  1. . . S OUT($P(^DPT(DFN,0),"^"),DFN)=DFN_"^"_$P(^DPT(DFN,0),"^")_"^"_GMVPAT
  1. I '$D(OUT) Q
  1. S DFN=""
  1. F S DFN=$O(OUT(DFN)) Q:DFN="" D
  1. .S DFN1=0
  1. .F S DFN1=$O(OUT(DFN,DFN1)) Q:'DFN1 D
  1. ..S GN=GN+1,^TMP($J,"GMRPT",GN)=OUT(DFN,DFN1)
  1. ..Q
  1. .Q
  1. S RESULT=$NA(^TMP($J,"GMRPT"))
  1. Q
  1. ROOMBED(RESULT,GMRWARD) ;GMV ROOM/BED [RPC entry point]
  1. ;RETURNS A LIST OF ROOMS/BEDS FOR A GIVEN MAS WARD(GMRWARD) IN RESULT ARRAY.
  1. Q:'$D(^DIC(42,"B",GMRWARD))
  1. N GN,GROOM,GWARD,GMVTMP K ^TMP($J,"GROOM")
  1. S (GN,GROOM)=0,GWARD=$O(^DIC(42,"B",GMRWARD,0)) I GWARD'>0 S ^TMP($J,"GROOM",1)="NO ROOM" G QUIT
  1. F S GROOM=$O(^DG(405.4,"W",GWARD,GROOM)) Q:GROOM'>0 I $D(^DG(405.4,GROOM)) D
  1. . S GMVTMP($P($P(^DG(405.4,GROOM,0),"^"),"-",1))=GROOM
  1. . ;S GN=GN+1,^TMP($J,"GROOM",GN)=GROOM_"^"_$P(^DG(405.4,GROOM,0),"^")
  1. . Q
  1. S GROOM="",GN=0
  1. F S GROOM=$O(GMVTMP(GROOM)) Q:GROOM="" D
  1. . S GN=GN+1,^TMP($J,"GROOM",GN)=GMVTMP(GROOM)_"^"_GROOM
  1. . Q
  1. QUIT S RESULT=$NA(^TMP($J,"GROOM"))
  1. Q
  1. CLOSEST(RESULT,GMVDFN,GMVDT,GMVT,GMVFLAG) ; GMV CLOSEST READING [RPC entry point]
  1. ; Get nearest reading to date(/time) provided
  1. ; Input: GMVDFN - DFN (required)
  1. ; GMVDT - FileMan date/time (optional)
  1. ; Default is NOW
  1. ; GMVT - Vital Type abbreviation, FILE 120.51, Field 1 (required)
  1. ; GMVFLAG - Where to look (optional)
  1. ; 0 = either before or after GMVDT (default)
  1. ; 1 = before GMVDT
  1. ; 2 = after GMVDT
  1. ; Output: RESULT - piece1^piece2
  1. ; where piece1 = date/time of reading (FileMan internal format)
  1. ; piece2 = reading
  1. ; If no records found piece 1 = -2
  1. ; and piece 2 = message text
  1. ; If an error was encountered piece1 = -1
  1. ; and piece2 = error message
  1. ;
  1. N GMVADIFF,GMVADT,GMVAVAL,GMVBDIFF,GMVBDT,GMVBVAL,GMVDATA,GMVTI
  1. S GMVDFN=+$G(GMVDFN),GMVDT=+$G(GMVDT),GMVT=$G(GMVT),GMVFLAG=+$G(GMVFLAG)
  1. S GMVFLAG=$S(GMVFLAG=2:2,GMVFLAG=1:1,1:0)
  1. I 'GMVDFN S RESULT="-1^DFN not defined" Q
  1. I '$D(^PXRMINDX(120.5,"PI",GMVDFN)) S RESULT="-2^Patient has no Vitals data on file" Q
  1. I 'GMVDT S GMVDT=$$NOW^XLFDT()
  1. I GMVT="" S RESULT="-1^Vital Type not defined" Q
  1. S GMVTI=$$GETIEN^GMVGETVT(GMVT,2)
  1. I 'GMVTI S RESULT="-1^Vital Type not found" Q
  1. I '$D(^PXRMINDX(120.5,"PI",GMVDFN,GMVTI)) S RESULT="-2^Patient has no data on file for this type" Q
  1. S (GMVADT,GMVAVAL,GMVBDT,GMVBVAL,GMVDATA)=""
  1. I GMVFLAG=0!(GMVFLAG=1) D
  1. .S GMVDATA=$$FIND(GMVDFN,GMVTI,GMVDT,0,-1)
  1. .S GMVBDT=$P(GMVDATA,U,1),GMVBVAL=$P(GMVDATA,U,2)
  1. S GMVDATA=""
  1. I GMVFLAG=0!(GMVFLAG=2) D
  1. .S GMVDATA=$$FIND(GMVDFN,GMVTI,GMVDT,0,1)
  1. .S GMVADT=$P(GMVDATA,U,1),GMVAVAL=$P(GMVDATA,U,2)
  1. I GMVFLAG=1 D
  1. .I GMVBDT'>0 S RESULT="-2^Before date not found" Q
  1. .I GMVBVAL="" S RESULT="-2^Before value not found" Q
  1. .S RESULT=GMVBDT_U_GMVBVAL
  1. I GMVFLAG=2 D
  1. .I GMVADT'>0 S RESULT="-2^After date not found" Q
  1. .I GMVAVAL="" S RESULT="-2^After value not found" Q
  1. .S RESULT=GMVADT_U_GMVAVAL
  1. I GMVFLAG=0 D
  1. .I GMVADT'>0,GMVBDT'>0 D Q
  1. ..S RESULT="-2^No records found"
  1. .I GMVADT'>0,GMVBDT>0 D Q
  1. ..S:GMVBVAL]"" RESULT=GMVBDT_U_GMVBVAL
  1. ..S:GMVBVAL="" RESULT="-2^No records found"
  1. .I GMVADT>0,GMVBDT'>0 D Q
  1. ..S:GMVAVAL]"" RESULT=GMVADT_U_GMVAVAL
  1. ..S:GMVAVAL="" RESULT="-2^No records found"
  1. .I GMVADT>0,GMVBDT>0 D
  1. ..S GMVBDIFF=+$$FMDIFF^XLFDT(GMVDT,GMVBDT,2)
  1. ..S GMVADIFF=+$$FMDIFF^XLFDT(GMVADT,GMVDT,2)
  1. ..I GMVBDIFF<GMVADIFF S RESULT=GMVBDT_U_GMVBVAL
  1. ..I GMVADIFF<GMVBDIFF S RESULT=GMVADT_U_GMVAVAL
  1. ..I GMVADIFF=GMVBDIFF S RESULT=GMVADT_U_GMVAVAL
  1. Q
  1. FIND(GMVDFN,GMVTI,GMVSDT,GMVX,GMVDIR) ; Get nearest record from GMVSDT date/time
  1. ; Input: GMVDFN - DFN (required)
  1. ; GMVTI - Vital Type (120.51) IEN (required)
  1. ; GMVSDT - FileMan date/time (optional)
  1. ; Default is NOW
  1. ; GMVX - Return numeric values only or all values including
  1. ; text (optional)
  1. ; 0 = numeric values only (default)
  1. ; 1 = all values including text
  1. ; GMVDIR - direction of search (required)
  1. ; -1 = look before GMVSDT
  1. ; 1 = look after GMVSDT
  1. ; Output: GMVY - piece1^piece2
  1. ; where piece1 = date/time of reading (FileMan internal format)
  1. ; piece2 = reading
  1. ; If an error was encountered piece1 = -1
  1. ; and piece2 = error message
  1. ;
  1. N GMVARR,GMVFLAG,GMVIEN,GMVY
  1. S GMVDFN=+$G(GMVDFN),GMVTI=+$G(GMVTI),GMVSDT=+$G(GMVSDT),GMVX=+$G(GMVX),GMVDIR=$G(GMVDIR)
  1. S GMVDIR=$S(GMVDIR=-1:-1,GMVDIR=1:1,1:"")
  1. I GMVDIR="" Q "-1^Direction of search not defined"
  1. I 'GMVTI Q "-1^Vital Type not defined"
  1. S GMVX=$S(GMVX=1:1,1:0)
  1. I 'GMVDFN Q "-1^Patient not defined"
  1. I '$D(^PXRMINDX(120.5,"PI",GMVDFN)) Q "-1^Patient has no Vitals data on file"
  1. I 'GMVSDT S GMVSDT=$$NOW^XLFDT()
  1. S (GMVFLAG,GMVIEN)=0,GMVY=""
  1. F S GMVSDT=$O(^PXRMINDX(120.5,"PI",GMVDFN,GMVTI,GMVSDT),GMVDIR) Q:'GMVSDT!(GMVFLAG) D
  1. .S GMVIEN=0
  1. .F S GMVIEN=$O(^PXRMINDX(120.5,"PI",GMVDFN,GMVTI,GMVSDT,GMVIEN)) Q:$L(GMVIEN)'>0!(GMVFLAG) D
  1. ..I GMVIEN=+GMVIEN D
  1. ...D F1205^GMVUTL(.GMVARR,GMVIEN,0)
  1. ..I GMVIEN'=+GMVIEN D
  1. ...D CLIO^GMVUTL(.GMVARR,GMVIEN)
  1. ..S GMVARR(0)=$G(GMVARR(0))
  1. ..Q:$P(GMVARR(0),U,8)=""
  1. ..Q:$P(GMVARR(0),U,1)'>0
  1. ..I GMVX=1 D
  1. ...S GMVY=$P(GMVARR(0),U,1)_U_$P(GMVARR(0),U,8),GMVFLAG=1
  1. ..I 'GMVX D
  1. ...I "UNAVAILABLEPASSREFUSED"[$$UP^XLFSTR($P(GMVARR(0),U,8)) Q
  1. ...S GMVY=$P(GMVARR(0),U,1)_U_$P(GMVARR(0),U,8),GMVFLAG=1
  1. I GMVY="" S GMVY="-1^No record found"
  1. Q GMVY
  1. ;