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

VPSRPC1.m

Go to the documentation of this file.
  1. VPSRPC1 ;BPOIFO/EL,WOIFO/BT - Patient Demographic and Clinic RPC;08/14/14 09:28
  1. ;;1.0;VA POINT OF SERVICE (KIOSKS);**1,2,4,14**;Aug 8, 2014;Build 26
  1. ;;Per VHA Directive 2004-038, this routine should not be modified.
  1. ;
  1. ; External Reference DBIA#
  1. ; ------------------------
  1. ; #10035 - ^DPT( references (Supported)
  1. ; #10040 - ^SC( references (Supported)
  1. ; #2052 - DID call (Supported)
  1. ; #2056 - DIQ call (Supported)
  1. ; #2701 - MPIF001 call (Supported)
  1. ; #10104 - XLFSTR call (Supported)
  1. ; #5888 - RPCVIC^DPTLK (Controlled Sub)
  1. ; #10061 - VADPT call (Supported)
  1. QUIT
  1. ;
  1. GETCLN(VPSARR,CLNAM) ; RPC: VPS GET CLINIC - CLINIC NAME ENTRY
  1. ; Called by Vetlink Kiosk system.
  1. ; The RPC will accept 2 parameters. The first parameter represents the
  1. ; return value as required by RPC Broker, and the 2nd parameter is
  1. ; single input value representing the name of the clinic (full or partial
  1. ; name). The output produced will be an array that returns all the
  1. ; possible matches for the clinic (one to many clinics). Values returned
  1. ; will be the name of the clinic and the ien of the clinic.
  1. ;
  1. ; OUTPUT
  1. ; VPSARR - passed in by reference; return array of clinics that **contains** input string (CLNAM)
  1. ; INPUT
  1. ; CLNAM - partial or full name of clinic;
  1. ;
  1. K VPSARR
  1. I $G(CLNAM)="" S VPSARR(1)="-1^CLINIC NAME NOT SENT" QUIT
  1. ;
  1. N VPSCLN,VPSIEN,LOCATION
  1. N VPSUPNAM S VPSUPNAM=$$UP^XLFSTR(CLNAM)
  1. N VPSCNAM S VPSCNAM=""
  1. N VPSFL S VPSFL=44
  1. ;
  1. F S VPSCNAM=$O(^SC("B",VPSCNAM)) QUIT:$G(VPSCNAM)="" I VPSCNAM[VPSUPNAM D
  1. . S VPSCLN=""
  1. . F S VPSCLN=$O(^SC("B",VPSCNAM,VPSCLN)) QUIT:$G(VPSCLN)="" D
  1. . . S VPSIEN=VPSCLN
  1. . . D SET(.VPSARR,VPSFL,VPSIEN,".001",VPSCLN,"CLINIC NUMBER") ;Clinic IEN
  1. . . D SET(.VPSARR,VPSFL,VPSIEN,".01",VPSCNAM) ;Clinic Name
  1. . . S LOCATION=$$GET1^DIQ(VPSFL,VPSCLN_",",10,"E") ;Physical Location
  1. . . D SET(.VPSARR,VPSFL,VPSIEN,10,LOCATION)
  1. ;
  1. I '$D(VPSARR) S VPSARR(1)="-1^CLINIC COULD NOT BE FOUND." QUIT
  1. ;
  1. QUIT
  1. ;
  1. GETDATA(VPSARR,SSN) ; RPC: VPS GET PATIENT DEMOGRAPHIC
  1. ; This RPC is called by the Vetlink Kiosk (point of service) system.
  1. ; Given Patient SSN, this RPC returns the patient demographics,insurance,and up-coming appointments, etc.
  1. ;
  1. ; INPUT
  1. ; SSN - patient SSN
  1. ; OUTPUT
  1. ; VPSARR - passed in by reference; return array of patient demographics
  1. ;
  1. D GETDATA2(.VPSARR,$G(SSN),"SSN")
  1. QUIT
  1. ;
  1. GETDATA2(VPSARR,VPSNUM,VPSTYP) ; RPC: VPS GET2 PATIENT DEMOGRAPHIC
  1. ; This RPC is called by the Vetlink Kiosk (point of service) system.
  1. ; Given Patient SSN or DFN or ICN or VIC/CAC, this RPC returns the patient demographics,insurance,and up-coming appointments, etc.
  1. ;
  1. ; OUTPUT
  1. ; VPSARR - passed in by reference; return array of patient demographics,appts
  1. ; INPUT
  1. ; VPSNUM - Parameter Value - patient SSN OR DFN OR ICN OR VIC/CAC (REQUIRED)
  1. ; VPSTYP - Parameter TYPE - SSN or DFN OR ICN OR VIC/CAC (REQUIRED)
  1. ;
  1. ; Return all categories
  1. N CATEGORY,ICAT ;F ICAT=1:1:6 S CATEGORY(ICAT)=ICAT
  1. N ANS
  1. D DT^DILF("E","T-60",.ANS)
  1. S CATEGORY(1)=1_";"_ANS_":"
  1. S CATEGORY(2)=6
  1. D GETDATA3(.VPSARR,$G(VPSNUM),$G(VPSTYP),.CATEGORY) ; RPC: VPS GET2 PATIENT DEMOGRAPHIC
  1. QUIT
  1. ;
  1. GETDATA3(VPSARR,VPSNUM,VPSTYP,VPSCAT) ; RPC: VPS ENHANCED GET PATIENT DEMOGRAPHIC
  1. ; This RPC is called by the Vetlink Kiosk (point of service) system.
  1. ; Given Patient SSN or DFN or ICN or VIC/CAC, this RPC returns the patient demographics,insurance,and up-coming appointments, etc
  1. ; for selected categories
  1. ;
  1. ; OUTPUT
  1. ; VPSARR - passed in by reference; return array of patient demographics,appts
  1. ; INPUT
  1. ; VPSNUM - Parameter Value - patient SSN OR DFN OR ICN OR VIC/CAC (REQUIRED)
  1. ; VPSTYP - Parameter TYPE - SSN or DFN OR ICN OR VIC/CAC (REQUIRED)
  1. ; VPSCAT - List of Category to print (REQUIRED)
  1. ; VPSCAT(1..N)=CATEGORY;FROMDATE:THROUGHDATE
  1. ; Example input parameter :
  1. ; VPSCAT(1)=6 - Patient demographics
  1. ; VPSCAT(2)=1;3140101:3141231 - Appointments start from 1/1/2014 through 12/31/2014
  1. ; VPSCAT(3)=2;3140601:3140630 - Lab Orders start from 6/1/2014 through 6/30/2014
  1. ; Valid Category:
  1. ; 1 - Appointment (With Date Range option)
  1. ; 2 - Lab Orders (With Date Range option)
  1. ; 3 - Consults
  1. ; 4 - Radiology (With Date Range option)
  1. ; 5 - Problem
  1. ; 6 - Patient Characteristics
  1. ; - Patient Current Inpatient Status
  1. ; - Patient Ward Location
  1. ; - Patient Bed Assignment
  1. ; - Facility Directory Preference
  1. ; 7 - Patient Additional patient demographic data
  1. ; 8 - Patient Clinical (Health Factor)
  1. ;
  1. ;
  1. K VPSARR
  1. S VPSARR(1)=$$VALIDATE($G(VPSTYP),$G(VPSNUM))
  1. QUIT:+VPSARR(1)=-1
  1. ;
  1. N DFN S DFN=VPSARR(1)
  1. K VPSARR
  1. N CAT,DTRANGE,SEQ S SEQ=0
  1. ;
  1. F S SEQ=$O(VPSCAT(SEQ)) QUIT:'SEQ D
  1. . S CAT=$P(VPSCAT(SEQ),";")
  1. . S DTRANGE=$P(VPSCAT(SEQ),";",2)
  1. . I CAT=1,$P(DTRANGE,":")="" D
  1. .. N ANS
  1. .. D DT^DILF("E","T-60",.ANS)
  1. .. S DTRANGE=ANS_":"_$P(DTRANGE,":",2)
  1. . I CAT=1 D GETAPPT^VPSRPC11(.VPSARR,DFN,DTRANGE) ;Appointments
  1. . I CAT=2 D GETLAB^VPSRPC12(.VPSARR,DFN,DTRANGE) ;Lab Orders
  1. . I CAT=3 D GETCNSLT^VPSRPC13(.VPSARR,DFN,DTRANGE) ;Consult
  1. . I CAT=4 D GETRAD^VPSRPC14(.VPSARR,DFN,DTRANGE) ;Radiology
  1. . I CAT=5 D GETPRBLM^VPSRPC15(.VPSARR,DFN) ;Problem
  1. . I CAT=6 D GETDEM^VPSRPC16(.VPSARR,DFN) ;Demographics
  1. . I CAT=7 D GETADEM^VPSRPC15(.VPSARR,DFN) ; Additional demographic data
  1. . I CAT=8 D GETHF^VPSRPC15(.VPSARR,DFN) ; Patient Health Factor
  1. QUIT
  1. ;
  1. VALIDATE(VPSTYP,VPSNUM) ;validate patient-id type and patient id value
  1. ; INPUT
  1. ; VPSTYP - Parameter TYPE - SSN or DFN OR ICN OR VIC/CAC (REQUIRED)
  1. ; VPSNUM - Parameter Value - patient SSN OR DFN OR ICN OR VIC/CAC (REQUIRED)
  1. ; RETURN
  1. ; DFN if patient-type/id pair is valid otherwise return -1^Errormessage
  1. ;
  1. N CM S CM=","
  1. ;
  1. QUIT:$G(VPSTYP)="" "-1^TYPE IS REQUIRED (VALID TYPE: SSN, DFN, ICN OR VIC/CAC)"
  1. QUIT:'$F(",SSN,DFN,ICN,VIC/CAC,",CM_VPSTYP_CM) "-1^INVALID TYPE (VALID TYPE: SSN, DFN, ICN OR VIC/CAC)"
  1. QUIT:$G(VPSNUM)="" "-1^"_VPSTYP_" IS REQUIRED"
  1. ;
  1. N DFN S DFN=0
  1. ;
  1. I VPSTYP="SSN" D
  1. . N SSN S SSN=$TR(VPSNUM,"- ")
  1. . I SSN'?1.N S DFN="-1"_U_"SSN SHOULD BE NUMERIC: "_VPSNUM QUIT
  1. . S DFN=$O(^DPT("SSN",SSN,0))
  1. . I +DFN'>0 S DFN="-1"_U_"NO PATIENT FOUND WITH SSN: "_VPSNUM
  1. QUIT:DFN DFN
  1. ;
  1. I VPSTYP="DFN" D
  1. . S DFN=VPSNUM
  1. . I '$D(^DPT(DFN)) S DFN="-1"_U_"NO PATIENT FOUND WITH DFN: "_DFN
  1. QUIT:DFN DFN
  1. ;
  1. I VPSTYP="VIC/CAC" D
  1. . D RPCVIC^DPTLK(.DFN,VPSNUM) ; get DFN given VIC/CAC number - IA 5888
  1. . S:DFN=-1 DFN="-1^INVALID VIC/CAC NUMBER "_VPSNUM
  1. QUIT:DFN DFN
  1. ;
  1. I VPSTYP="ICN" D
  1. . S DFN=$$GETDFN^MPIF001(VPSNUM) ; get DFN given ICN in the Patient file - IA 2701
  1. ;
  1. QUIT DFN
  1. ;
  1. SET(VPSARR,VPSFL,VPSIEN,VPSFLD,VPSDA,VPSDS,VPSCAT) ;Set line item to output array
  1. ; OUTPUT
  1. ; VPSARR - passed in by reference; This is the Array of clinics contains the line item
  1. ; INPUT
  1. ; VPSFL - File Number
  1. ; VPSIEN - File IEN
  1. ; VPSFLD - File Field Number
  1. ; VPSDA - Field Value
  1. ; VPSDS - (optional) User defined Field Name - default is the Fileman fieldname
  1. ; VPSCAT - Category: 1 - Appointment, 2 - Lab Orders, 3 - Consults, 4 - Radiology, 5 - Problem, 6 - Patient demographics
  1. ;
  1. N CNT S CNT=$O(VPSARR(""),-1)+1
  1. I $G(VPSDS)="",$G(VPSFL),$G(VPSFLD) N VPSOUT D FIELD^DID(VPSFL,VPSFLD,"","LABEL","VPSOUT") S VPSDS=VPSOUT("LABEL")
  1. S VPSARR(CNT)=$G(VPSFL)_U_$G(VPSIEN)_U_$G(VPSFLD)_U_$G(VPSDA)_U_$G(VPSDS)_U_$G(VPSCAT)
  1. QUIT