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
- aContext
- String
The AppContext to set prior to the call
Return Value
The resulting DataTableRemarks
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
Copy Code | |
---|---|
aRemoteSession.AppContext = "VEN RPC"; |
Copy Code | |
---|---|
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 RemoteSessionCopy Code | |
---|---|
DataTable demoTable=aRemoteSession.TableFromCommand("BMX DEMO^S^10"); |