Changes to the Database and Database Interface

With the Noah 4.5 release, HIMSA added the following new classes and functions for use with Noah Mobile. 

For detailed information, refer to the namespace in the BusinessAPI.chm file.

New/changed classes in the NoahDataObjects namespace

The following new classes are included in the NoahDataObjects namespace: 

  • AppPermission

  • MobileApp

  • UserPrivilege

Changed classes

  • Patient: Added property: LastModifiedDate

New functions in the Database Interface

The following new functions are declared in the database interface

  • void PutMobileAppPermissions(int ModuleID, int[] PermissionIDs, object callContext)

  • int[] GetMobileAppPermissions(int ModuleID, object callContext)

  • void DelMobileAppPermissions(int ModuleID, int[] PermissionIDs, object callContext)

  • void PutAppPermissions(AppPermission[] appPermissions, object callContext)

  • AppPermission[] GetAppPermissions(object callContext)

  • void DelAppPermissions(AppPermission[] appPermissions, object callContext)

  • void RegisterMobileApp(MobileApp mobileApp, object callContext)

  • void UnregisterMobileApp(int ModuleID, object callContext)

  • MobileApp[] GetMobileApps(object callContext)

  • Patient PutPatient(Patient patient, object callContext)

  • User GetUser(string UserName, object callContext)

  • NoahDataObjects.Actions[] GetActions(int PatientID, ActionFilter ActionFilter, object callContext)

  • NoahDataObjects.Patient[] GetPatients(string searchText, int Page, int PageSize, ref int? QueryTotalNoOfPatients, object callContext)

  • bool ValidateLogin(string username, string password, out int userid, object callContext)

  • Patient[] GetUpdatedPatients(int Page, int PageSize, DateTime StartDateTime, DateTime? EndDateTime, object callContext);

  • ActionEx[] GetUpdatedActions(int Page, int PageSize, DateTime StartDateTime, DateTime? EndDateTime, int [] DataTypes, object callContext)

  • NoahDataObjects.Action[] ActionreferencedBy(int ActionID)

  • UserPrivilege GetUserPrivilege(int userUD, object callContext)

AppPermission Class

The AppPermission class describes the permissions that relates to the properties in the patient object e.g. if a property is required when creating/updating a patient object the required is set to true. A detailed description of the AppPermission class is found in the namespace in the BusinessAPI.chm file. The Noah Mobile Compatible apps will read the AppPermission Class and from there create data to be updated/inserted in the Business System If MobileAppEditPatientsEnable is set to true.

One important field in the AppPermission class is the ReadOnly field, when this field is true the administrator is not allowed to change the Default property. HIMSA requires that the ReadOnly field and default is set to true for the following properties: ID, FirstName, LastName, Gender, BirthDate. This is the minimum dataset that an App can request from the Business System. 

When calling the GetAppPermissions function that must be implemented in the database interface the returned array must contain a row describing the following names that correspond to a property in the Patient class defined in NoahDataObjects. This is the only row that the function must return.

The following is the HIMSA default in Noah System:

  • Default

    • The fields where default set to true is the default fields that any app will have access to read when it is registers

    • Note that different apps can have access to different data depending on the App permissions for the app. 

  • ReadOnly

    • Fields with ReadOnly means that the system MUST, as a minimum, always have these fields set to the Default

  • Required 

    • Required fields are the fields that the Business system requires to add a patient

    • The App will know this and should ask that the user fills in these data to create a patient

      • They must be set, but if the MobileAppEditPatientsEnable is set to false it will not matter

      All business systems must initialize the AppPermission table. The table initialized must have the same number of rows as the table shown below, but the business system may change a few values. In rows where the ReadOnly field is true all the other column values must be the same as in the table shown below. In rows where the ReadOnly column is false, the business system is free to choose the initialization values for the Default and Required column (the values must be true or false). The other values must be same as in the table shown below.

Besides these fields there will also be properties like ID, PatientGUID, CreatedBy, LastModified, etc. that always will be returned and cannot be changed by the Business System.