Is it possible to track information of customers who is using particular OpenMRS modules? - openmrs

I just get started with OpenMRS. My goal is to develop a custom module in OpenMRS. If I managed to develop a custom module and added it to the index page, Is it possible to track information of customers who are using particular modules? or the customer information at the system level.
Using this information, We like to send feedback surveys to customers. Is this allowed possible/allowed in OpenMRS policy?

Related

Synchronization across different systems

I have 2 systems let's call them i and j. Each have it's own database.
Each have a registration page, where a user is inserted in a user table.
What is the best way to synchronize both tables, where if any user registers at system i it will be also registered at system j.
Notes:
I cannot read from each other databases directly.
I can do small changes in the code if needed and it will not affect the system performance or natural behavior.
I can create API's for both systems if needed.
I can add any tables or fields if needed.
I can create any cron jobs unless it will affect the performance of the system or server.
I'm using cPanel.
Technologies:
MySQL
PHP
REST API's
The fact that you list cpanel as a technology shows you're working with an inflexible budget hosting vendor. So it's unlikely they'll cooperate in setting up background tasks (cron jobs) to merge your user tables behind the scenes. (cpanel isn't a technology: it's a system administration user interface provided by hosting vendors who don't trust their customers' skills.)
So. you should design and implement a REST API in the code of both your apps to perform user registration and authentication tasks. You didn't show us the details of your app, so it's hard to design it for you. Still it seems likely you'll have to implement these operations:
PUT user
DELETE user
GET user
POST user to validate a user's password, etc. (Don't use GET to pass secret information: GET request parameters go into server logs.)
PATCH to update details of a user.
If you get the API working, whenever you create/retrieve/update/delete user information in one app, you'll use the API to change it in the other.
Your best bet would be to create a third app just for user management, and have both your existing apps use it. That way you're sure to have one coherent source of truth about users. But you can do it just within two apps.

I want to create a service that allows my company's products to move pages only for the products that customers have

This article was written using a translator.
There are many products in my company.
Like Atlasian, I want to create a service that allows my company's products to move pages only for the products that customers have.
In order to do so, you need to know the products of each customer, and I need to make sure that only those products can be clicked, but can you not use the database?
Using the database makes it so complicated that I want to implement it as simple as possible.
You need to know a programming language/ framework that allows you to create a service/api.
There are various ones available.
Search on the internet.
The architecture of a service is slightly different from directly having a data entry form that stores into a database.
Most apis'/ service entails you creating classes to do CRUD operations(i.e create,read,update and delete operations) by coding classes and then consuming the API into the application.
So yes you can have within the API classes that can be called and then used to store information that the customer has installed into a database, and also retrieve product values specific to a specific customer.
See API as mid layer between front end,and database

Adyen Web SDK How to log product information?

So I'm currently using the Adyen Web SDK in conjunction with NodeJS, and was hoping to get some help with something.
Basically I'm building a store that sells digital products, and when users purchase a product, I store that information in my database. However, I'd also like to somehow store it with Adyen so that I can see in the list of transactions in the Adyen control panel what product was purchased for each transaction. (Without manually checking my Database since ideally it would be nice to export this in the reports as well!)
I've dug through the API docs for Adyen but nothing seems to be referenced about doing anything like this other than lineItems (https://docs.adyen.com/api-explorer/#/PaymentSetupAndVerificationService/v41/paymentSession)
But lineItems seems more for physical businesses I think? + I'm not sure if this information is even viewable in the Adyen Control Panel.
If this isn't possible, then what's the best option? Export the transactions from Adyen and loop through my database and grab the information for each transaction?
I would suggest using metadata. It is an available field in /paymentSession (and most of adyen's API calls). It's a hashmap you can put up to 20 key/value pairs.
You can then have the reports return the metadata in a new column. The metadata will be added as a JSON string. Though you have to reach out to adyen's support to enable returning metadata in reports.

Creating individual user profiles

I am working on a project and one of the key components is creating customized user profiles. I already have a schema design for the user data that will generate said profile. But I am lost on how the technology works.
I am mostly front-end so it has been sort of overwhelming. The goal is to allow multiple user profile creations and so far I have only seen that this can be achievable via NodeJs or PHP. I have not found any guides.
I am not sure if I am asking the right questions.
Any help is appreciated. Thank you.
Since you mention you already have schema for the user table, I assume you are going to design your own database and backend node.js API to handle user profiles. You may want to build authentication functionalities in the future. If you are not familiar with Node.js yet, I recommend you to start with https://www.tutorialspoint.com/nodejs/index.htm. It's a good tutorial for beginners.
The whole purpose of a back-end node.js API is building numbers of service with specified route. Once a http request is made to a particular path, it takes parameters and execute some script. In you case the scripts will do something in database containing user profile data, for example, add a row in your data table. This operation is equivalent to creating a new user. Then, the API send response to front-end.
Keep in mind maintaining user profile data is nothing special than regular data. You should be able to pick it up with a couple of days training if you know javascriopt. But if you have to build authentication functionality you need more technologies.

How to implement Data push(server push) in worklist application

I am planning to implement Server Push functionality in human workflow. Say when a task is assigned to a group and any of the group member updated the task, it has to update the task status automatically(without browser refresh) in other group members who are opened the worklist page.
How do I can achieve this? any ideas or suggestions will be appreciated.
If you want a Realtime Web Server there are a bunch of options for different technologies listed on this Realtime Web Technology Guide.
If you can provide a bit more information about your choice of server technology I can be more specific about a recommendation/technology match.