BMXNET 4.0 Developer API
Calling a Custom Remote Procedure call (RPC) registered in VA FileMan’s REMOTE PROCEDURE file that results in a DataTable. You must design your remote procedure’s M routine to build its result its data in the specific format described later in this document.
Namespace:
IndianHealthService.BMXNetAssembly: BMXNET40 (in BMXNET40.dll)
Syntax
| C# | Visual Basic | Visual C++ |
Parameters
- aCommand
- String
The co /// The name of the RPC
- aDataSet
- DataSet
The DataSet to be populated with a resulting DataTable named aTableNAme
- aTableName
- String
The name of the DataTable in the DataSet to populate or to create
- aContext
- String
The AppContext to set prior to the call
Return Value
The resulting DataTable
Remarks
Normally the AppContext is set once, after logging into the BMX, with a
single AppContext for the current applications or specified in every RPC call.
Examples
The VEN namespace is for PCC+ and the example below would be used at the beginning
of a PCC+ application.
The M code for a simple remote procedure call (BMX PATIENT DEMO) with two parameters to return a list of patients. See the following example. Note the inclusion of an error trap in the routine; BMXNet RPC routines must contain a functional error trap.
Register as an RPC
aRemoteSession.AppContext = "VEN RPC";
| |
Figure 5 2 shows the M code for a simple remote procedure call (BMX PATIENT DEMO) with two parameters to return a list of patients. See the following example. Note the inclusion of an error trap in the routine; BMXNet RPC routines must contain a functional error trap.
PDEMO(BMXY,BMXPAT,BMXCOUNT) ;EP
;This simple RPC demonstrates how to format data
;for the BMXNet ADO.NET data provider
;
;Returns a maximum of BMXCOUNT records from the
;VA PATIENT file whose names begin with BMXPAT
;
N BMXI,BMXD,BMXC,BMXNODE,BMXDOB
;
; BMXY is passed in by reference. Set it to
;the value of the variable in which we will return our data:
S BMXY="^TMP(BMX,"_$J_")"
;
;The first subnode of the data global contains the column header information
;in the form "txxxxxCOLUMN1NAME^txxxxxCOLUMN2NAME"_$C(30)
;where t is the column data type:
; T for text
; I for integer
; N for floating point number
; D for date/time.
;xxxxx is the length of the column in characters.
;
S BMXI=0,BMXC=0
S ^ TMP(BMX,$J,BMXI)="T00030NAME^T00010SEX^D00020DOB"_$C(30)
;
;You MUST set an error trap:
S X="PDERR^BMXRPC6",@^%ZOSF("TRAP")
;
;Strip CR, LF, TAB from BMXCOUNT parameter
S BMXCOUNT=$TR(BMXCOUNT,$C(13),"")
S BMXCOUNT=$TR(BMXCOUNT,$C(10),"")
S BMXCOUNT=$TR(BMXCOUNT,$C(9),"")
;
;Iterate through the global and set the data nodes:
S:BMXPAT="" BMXPAT="A"
S BMXPAT=$O(^DPT("B",BMXPAT),-1)
S BMXD=0
F S BMXPAT=$O(^DPT("B",BMXPAT)) Q:BMXPAT="" S BMXD=$O(^DPT("B",BMXPAT,0)) I +BMXD S BMXC=BMXC+1 Q:(BMXCOUNT)BMXC BMXCOUNT) D
. Q:'$D(^DPT(BMXD,0))
. S BMXI=BMXI+1
. S BMXNODE=^DPT(BMXD,0)
. ;Convert the DOB from FM date to external form
. S Y=$P(BMXNODE,U,3)
. I +Y X ^DD("DD")
. S BMXDOB=Y
. ;The data node fields are in the same order as the column header, i.e. NAME^SEX^DOB
. ;and terminated with a $C(30)
. S ^ TMP(BMX,$J,BMXI)=$P(BMXNODE,U)_U_$P(BMXNODE,U,2)_U_BMXDOB_$C(30)
;
;After all the data nodes have been set, set the final node to $C(31) to indicate
;the end of the recordset
S BMXI=BMXI+1
S ^ TMP(BMX,$J,BMXI)=$C(31)
Q
;
PDERR ;Error trap for PDEMO
;
S ^ TMP(BMX,$J,BMXI+1)=$C(31)
Q
| |
NAME: BMX DEMO TAG: PDEMO ROUTINE: BMXRPC6 RETURN VALUE TYPE: GLOBAL ARRAY
Call using a RemoteSession
DataTable demoTable=aRemoteSession.TableFromCommand("BMX DEMO^S^10");
| |