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

GMVRPCHL.m

Go to the documentation of this file.
  1. GMVRPCHL ;HIOFO/FT-RPC FOR HOSPITAL LOCATION SELECTION ;12/7/05 10:32
  1. ;;5.0;GEN. MED. REC. - VITALS;**3,22**;Oct 31, 2002;Build 22
  1. ;
  1. ; This routine uses the following IAs:
  1. ; #1378 - DGPM references (controlled)
  1. ; #2965 - FILE 405.1 references (controlled)
  1. ; #10039 - FILE 42 references (supported)
  1. ; #10040 - FILE 44 references (supported)
  1. ; #10061 - ^VADPT calls (supported)
  1. ; #10103 - ^XLFDT calls (supported)
  1. ;
  1. ; This routine supports the following IAs:
  1. ; #4461 - GMV LOCATION SELECT RPC is called at RPC (private)
  1. ;
  1. RPC(RESULTS,OPTION,DATA) ; [Procedure] Main RPC call tag
  1. ; RPC: [GMV LOCATION SELECT]
  1. ;
  1. ; Input parameters
  1. ; 1. RESULTS [Reference/Required] RPC Return array
  1. ; 2. OPTION [Literal/Required] RPC Option to execute
  1. ; 3. DATA [Literal/Required] Other data as required for call
  1. ;
  1. S RESULTS=$NA(^TMP("GMVHLOC",$J)) K @RESULTS
  1. D:$T(@OPTION)]"" @OPTION
  1. S:'$D(@RESULTS) @RESULTS@(0)="-1^No results returned"
  1. D CLEAN^DILF,KVAR^VADPT
  1. Q
  1. NAME ; Return list of clinics and wards by name
  1. ; DATA=pieceA^pieceB^pieceC
  1. ; where pieceA - file number (required)
  1. ; pieceB - value to begin search with (required)
  1. ; pieceC - field(s) to do the look-up on (optional, defaults to .01 field)
  1. ;
  1. ; RESULTS(0)=piece1^piece2
  1. ; RESULTS(n)=piece3
  1. ; where piece1 - -1 if error OR number of entries found
  1. ; piece2 - error message if piece1=-1
  1. ; piece3 - field values requested.
  1. ; n - sequential number starting with 1
  1. ;
  1. N GMVSCRN,GMVFLD,X
  1. S DATA=$G(DATA)
  1. I +DATA'>0 D Q
  1. .S @RESULTS@(0)="-1^Not a valid file number"
  1. .Q
  1. S GMVSCRN=$S(+DATA=44:"I $P(^(0),U,3)'=""Z""",1:"")
  1. I $P(DATA,"^",3)="" S GMVFLD="@;.01"
  1. E S GMVFLD="@;"_$P(DATA,"^",3)
  1. S GMVFLD=$P(GMVFLD,";",1,5) ; Limit lookup to 4 display fields
  1. D FIND^DIC(+DATA,"",GMVFLD,"P",$P(DATA,"^",2),"","",GMVSCRN)
  1. I $D(^TMP("DIERR",$J)) D Q
  1. .S @RESULTS@(0)="-1^"_$G(^TMP("DIERR",$J,1,"TEXT",1))
  1. .Q
  1. I ^TMP("DILIST",$J,0)<1 D Q
  1. .S @RESULTS@(0)="-1^No entries found matching '"_$P(DATA,U,2)_"'."
  1. .Q
  1. ;I ^TMP("DILIST",$J,0)>60 D Q
  1. ;.S @RESULTS@(0)="-1^Too many matches found, please be more specific."
  1. ;.Q
  1. F X=0:0 S X=$O(^TMP("DILIST",$J,X)) Q:'X D
  1. .S @RESULTS@(X)=+DATA_";"_^TMP("DILIST",$J,X,0)
  1. .Q
  1. S @RESULTS@(0)=+$O(@RESULTS@(""),-1)
  1. Q
  1. APPT ; Get patient appointments using SDA^VADPT
  1. ; DATA=GMVDFN^GMVFROM^GMVTO^GMVFLAG
  1. ; GMVDFN - DFN (required)
  1. ; GMVFROM - Start date of search (optional)
  1. ; GMVTO - End date of search (optional)
  1. ; GMVFLAG - kind of appt flag (optional)
  1. ; RESULTS(0)=piece1^piece2
  1. ; RESULTS(n)=piece3^piece4^piece5^piece6^piece7^piece8^piece9^piece10
  1. ;
  1. ; where piece1 - -1 if an error OR the number of records returned
  1. ; piece2 - an error message if piece1 = -1
  1. ; piece3 - appointment date/time (FM internal)
  1. ; piece4 - appointment date/time (external)
  1. ; piece5 - clinic (internal)
  1. ; piece6 - clinic (external)
  1. ; piece7 - status (internal)
  1. ; piece8 - status (external)
  1. ; piece9 - appointment type (external)
  1. ; piece10 - appointment type (external)
  1. ; n - a sequential number starting with 1
  1. ;
  1. N GMVARRAY,GMVCNT,GMVE,GMVI,GMVLOOP,GMVDFN,GMVFROM,GMVTO,GMVFLAG
  1. N DFN,VAERR,VASD
  1. S DATA=$G(DATA)
  1. S GMVDFN=$P(DATA,U,1),GMVFROM=$P(DATA,U,2),GMVTO=$P(DATA,U,3),GMVFLAG=$P(DATA,U,4)
  1. S GMVDFN=+$G(GMVDFN)
  1. I '$G(GMVDFN) S @RESULTS@(0)="-1^Patient ID is missing" Q
  1. I $G(GMVFROM)="" S GMVFROM=$$FMADD^XLFDT(DT,-365)
  1. I $G(GMVTO)="" S GMVTO=DT_".235959"
  1. S:GMVFLAG="" VASD("W")="123456789"
  1. S DFN=GMVDFN,VASD("T")=GMVTO,VASD("F")=GMVFROM
  1. D SDA^VADPT
  1. I $G(VAERR)=1 S @RESULTS@(0)="-1^DFN or ^DPT(DFN,0) is not defined" Q
  1. S @RESULTS@(0)=0
  1. I '$D(^UTILITY("VASD",$J)) Q
  1. S (GMVCNT,GMVLOOP)=0
  1. F S GMVLOOP=$O(^UTILITY("VASD",$J,GMVLOOP)) Q:'GMVLOOP D
  1. .S GMVE=$G(^UTILITY("VASD",$J,GMVLOOP,"E"))
  1. .S GMVI=$G(^UTILITY("VASD",$J,GMVLOOP,"I"))
  1. .Q:'$P(GMVI,U,1)
  1. .S GMVCNT=GMVCNT+1
  1. .S GMVARRAY(9999999.999999-$P(GMVI,U,1))=$P(GMVI,U,1)_U_$P(GMVE,U,1)_U_$P(GMVI,U,2)_U_$P(GMVE,U,2)_U_$P(GMVI,U,3)_U_$P(GMVE,U,3)_U_$P(GMVI,U,4)_U_$P(GMVE,U,4)
  1. .Q
  1. S $P(@RESULTS@(0),U,1)=GMVCNT
  1. K ^UTILITY("VASD",$J)
  1. S (GMVCNT,GMVLOOP)=0
  1. F S GMVLOOP=$O(GMVARRAY(GMVLOOP)) Q:'GMVLOOP D
  1. .S GMVCNT=GMVCNT+1
  1. .S @RESULTS@(GMVCNT)=$G(GMVARRAY(GMVLOOP))
  1. .Q
  1. Q
  1. ADMIT ; return a list of admissions
  1. ; DATA=DFN
  1. ; RESULTS(0)=piece1
  1. ; RESULTS(n)=piece2^piece3^piece4^piece5^piece6
  1. ; where piece1 - number of records returned
  1. ; piece2 - movement date/time (external)
  1. ; piece3 - location ien (FILE 44)
  1. ; piece4 - location name (FILE 44, Field .01)
  1. ; piece5 - type of move
  1. ; PIECE6 - movement ien
  1. ; n - a sequential number starting with 1
  1. ;
  1. N DFN,TIM,MOV,X0,MTIM,XTYP,XLOC,HLOC,ILST
  1. S DFN=DATA,ILST=0,TIM=""
  1. I '$G(DFN) Q
  1. F S TIM=$O(^DGPM("ATID1",DFN,TIM)) Q:TIM'>0 D
  1. .S MOV=0
  1. .F S MOV=$O(^DGPM("ATID1",DFN,TIM,MOV)) Q:MOV'>0 D
  1. ..S X0=$G(^DGPM(MOV,0)) I X0']"" Q
  1. ..S MTIM=$P(X0,U),MTIM=$$FMTE^XLFDT(MTIM,"1P")
  1. ..S XTYP=$P($G(^DG(405.1,+$P(X0,U,4),0)),U,1)
  1. ..S XLOC=$P($G(^DIC(42,+$P(X0,U,6),0)),U,1),HLOC=+$G(^(44))
  1. ..S ILST=ILST+1,@RESULTS@(ILST)=MTIM_U_HLOC_U_XLOC_U_XTYP_U_MOV
  1. ..Q
  1. .Q
  1. S @RESULTS@(0)=ILST
  1. Q
  1. CLINIC ; Return list of active clinics
  1. ; DATA = GMVFROM^GMVMAX^GMVDIR
  1. ; Where:
  1. ; GMVFROM - Value to begin the search (optional). Default is null (i.e., start
  1. ; with the first entry in the B x-ref).
  1. ; GMVMAX - Maximum number of entries to return. (optional) Default is 100.
  1. ; GMVDIR - Direction of search (optional). 1 means forward and -1 means backwards.
  1. ; Default is 1.
  1. ; Output
  1. ; RESULT(n)=piece1^piece2
  1. ;
  1. ; where n is a sequential number starting with zero
  1. ; piece1 - 44;ien (44, a semi-colon and the entry number)
  1. ; piece2 - location name (FILE 44, Field .01)
  1. ;
  1. ; ex:
  1. ; RESULTS(0)=n
  1. ; RESULTS(1)=44;123^TEST CLINIC
  1. ;
  1. ; If no entries are found, then RESULTS(0)="-1^NO ENTRIES FOUND"
  1. ;
  1. N GMVACTIV,GMVCNT,GMVDIR,GMVFROM,GMVIEN,GMVLAST,GMVLOCS,GMVLOOP,GMVMAX,GMVNAME,GMVNODE,GMVX
  1. S GMVFROM=$P(DATA,U,1),GMVMAX=+$P(DATA,U,2),GMVDIR=$P(DATA,U,3)
  1. S:'GMVMAX GMVMAX=100
  1. S GMVDIR=$S(GMVDIR=-1:-1,1:1)
  1. I GMVFROM]"" D ;get entry before or after GMVFROM
  1. .S:GMVDIR=1 GMVLAST=$O(^SC("B",GMVFROM),-1)
  1. .S:GMVDIR=-1 GMVLAST=$O(^SC("B",GMVFROM))
  1. .S GMVFROM=$G(GMVLAST)
  1. .Q
  1. S GMVCNT=0,GMVNAME=GMVFROM
  1. F S GMVNAME=$O(^SC("B",GMVNAME),GMVDIR) Q:GMVNAME=""!(GMVCNT=GMVMAX) D
  1. .S GMVIEN=0
  1. .F S GMVIEN=$O(^SC("B",GMVNAME,GMVIEN)) Q:'GMVIEN!(GMVCNT=GMVMAX) D
  1. ..S GMVNODE=$G(^SC(GMVIEN,0))
  1. ..Q:$P(GMVNODE,U,1)="" ;no name
  1. ..Q:$P(GMVNODE,U,3)'="C"
  1. ..D Q ;clinics
  1. ...Q:+$G(^SC(GMVIEN,"OOS")) ;out of service
  1. ...S GMVACTIV=$G(^SC(GMVIEN,"I"))
  1. ...I GMVACTIV Q:DT>+GMVACTIV&($P(GMVACTIV,U,2)=""!(DT<$P(GMVACTIV,U,2)))
  1. ...S GMVCNT=GMVCNT+1
  1. ...S @RESULTS@(GMVCNT)="44;"_GMVIEN_U_$P(^SC(GMVIEN,0),U)
  1. ...Q
  1. ..Q
  1. .Q
  1. I GMVCNT=0 S @RESULTS@(0)="-1^NO ENTRIES FOUND"
  1. I GMVCNT>0 S @RESULTS@(0)=GMVCNT
  1. Q