Nova postagem

Rechercher

Artigo
· Fev. 9, 2024 6min de leitura

Continuous Delivery of your InterSystems solution using GitLab - Part XII: Dynamic Inactivity Timeouts

Welcome to the next chapter of my CI/CD series, where we discuss possible approaches toward software development with InterSystems technologies and GitLab.
Today, we continue talking about Interoperability, specifically monitoring your Interoperability deployments. If you haven't yet, set up Alerting for all your Interoperability productions to get alerts about errors and production state in general.

Inactivity Timeout is a setting common to all Interoperability Business Hosts. A business host has an Inactive status after it has not received any messages within the number of seconds specified by the Inactivity Timeout field. The production Monitor Service periodically reviews the status of business services and business operations within the production and marks the item as Inactive if it has not done anything within the Inactivity Timeout period.
The default value is 0 (zero). If this setting is 0, the business host will never be marked Inactive, no matter how long it stands idle.

1 Comment
Discussão (1)1
Entre ou crie uma conta para continuar
Pergunta
· Fev. 8, 2024

help with TLS on 2016 version

Hi,

I am trying to connect to another server using  %Net.HttpRequest.

I keep getting this error  : SSL23_GET_SERVER_HELLO:unsupported protocol.

My guess is that the site I am reaching for uses TLS1.3 which is not supported in 2016, But I cant right now ask my client to upgrade.

Is it possible to override this ? install some kind of a patch or a more recent version of openssl on the server ?

Thanks

Amiram

2 Comments
Discussão (2)3
Entre ou crie uma conta para continuar
Anúncio
· Fev. 8, 2024

Seeking Exam Design Feedback for InterSystems IRIS Developer Professional Exam

Hello Everyone,

The Certification Team of InterSystems Learning Services is developing an InterSystems IRIS Developer Professional certification exam, and we are reaching out to our community for feedback that will help us evaluate and establish the contents of this exam.

Note: This exam will replace the current InterSystems IRIS Core Solutions Developer Specialist exam when it is released. Please note from the target role description below that the focus of the new exam will be more on developer best practices and a lot less on the ObjectScript programming language.

How do I provide my input? Complete our Job Task Analysis survey (JTA)! We will present you with a list of job tasks, and you will rate them on their importance as well as other factors.

How much effort is involved? It takes about 20-30 minutes to fill out the survey. You can be anonymous or identify yourself and ask us to get back to you.

How can I access the survey? You can access it here

  • Survey does not work well on mobile devices - you can access it, but it will involve a lot of scrolling
  • Survey can be resumable if you return to it on the same device in the same browser - answers save with the Save/Next button
  • Survey will close on March 8, 2024

 

What’s in it for me? You get to weigh-in on the exam topics for our new developer exam AND you will be entered in a raffle where 15 lucky winners will be given a $50 Tango* card (Available for US-based participants. InterSystems and VA employees are not eligible).

  • Tango cards are a popular digital reward platform that provides a wide selection of e-gift cards from various retailers.  

Here are the exam title and the definition of the target role:

InterSystems IRIS Developer Professional

back-end software developer who:

  • writes and executes efficient, scalable, maintainable, and secure code on (or adjacent to) InterSystems IRIS using best practices for the development lifecycle,
  • effectively communicates development needs to systems and operations teams (e.g., database architecture strategy),
  • integrates InterSystems IRIS with modern development practices and patterns, and
  • is familiar with the different data models and modes of access for InterSystems IRIS (ObjectScript, Python, SQL, JDBC/ODBC, REST, language gateways, etc.).

At least 2 years of experience developing with InterSystems IRIS is recommended. Any code samples that include InterSystems IRIS classes will have methods displayed in both ObjectScript and Python (or SQL). 

Discussão (0)1
Entre ou crie uma conta para continuar
Anúncio
· Fev. 7, 2024

InterSystems Certification is looking for question writers for our upcoming InterSystems TrakCare Reports exam

The InterSystems Certification Team is building an InterSystems TrakCare Reports certification exam and is looking for Subject Matter Experts (SMEs) from our community to help write and review questions. You, as a valued InterSystems community member, know the challenges of working with our technology and what it takes to be successful at your job. A work assignment will typically involve writing 15 assigned questions and reviewing 15 assigned directly to you.

Proposed Project Work Dates: The work assignments will be assigned by the Certification Team through September 15, 2024.

Here are the details:

Action Item

Details

Contact InterSystems Certification

Write to certification@intersystems.com to express your interest in the Certification Subject Matter Expert Program. Tell us that you are interested in being an InterSystems TrakCare Reports SME (an individual with at least one year of experience with InterSystems TrakCare Reports tasks).

Complete project profile - External Participants

If you are an external volunteer looking to participate, a team member will send you a profile form to determine if your areas of expertise align with open project. 

Accept

If you are selected for an exam development opportunity, a team member will email you a Non-Disclosure Agreement requiring your signature.

Train

After receiving your signed document, and before beginning to write questions, you will be asked to watch a short training video on question-item writing.

Participate

Once onboarded, the Certification Team will send you information regarding your first assignment. This will include:

  • an invitation to join Certiverse, our new test delivery platform, as an item writer and reviewer
  • an item writing assignment, which usually consists of the submission of 15 scenario-based questions
  • an alpha testing assignment, which usually consists of reviewing 15 items written by your peers

You will typically be given one month to complete the assignment.

Subject Matter Experts are eligible for a SME badge based on successful completion of their exam development participation. SMEs are also awarded the InterSystems TrakCare Reports certification if they write questions for all KSA Groups and their questions are accepted.

Interested in participating? Email certification@intersystems.com now!

KSA Group KSA Target Item
1. Creates InterSystems Reports using Logi Designer within TrakCare 1. Describes what the specification is saying

1. Recalls what data sources and procedures are, and how to access the sources of data

2. Identifies what parameters are used from the specification

3. Distinguishes between different page report component types (eg. cross tabs, banded objects, normal tables)

2. Identifies the components of InterSystems Reports

1. Distinguishes between catalogues and reports

2. Recalls the features of a catalogue

3. Catalogues connections and terms

4. Accesses the catalogue manager in the designer

5. Identifies which data source types are used in reporting

6. Identifies the data source connection and how to modify it

7. Identify what is required to use a JDBC connection

8. Recalls what a stored procedure is

9. Recalls when and why to update a stored procedure

10. Distinguishes between different data sources and their use cases

11. Recalls the importance of binding parameters

12. Manages catalogues using reference entities

13. Recalls how to change the SQL type of a database field (eg. dates)

14. Identifies how to reuse sub-reports

15. Recalls the different use cases for sub-reports

16. Describe how to use parameter within a sub-report

17. Recalls how to configure the parameters that the sub-report requires

18. Recalls how to link a field on a row to filter sub-reports

19. Recalls the potential impact of updating stored procedures on the settings

3. Uses Logi Designer to design and present data

1. Distinguishes between the different formats of reports

2. Determines when and how to use different kinds of page report component types

3. Recalls the meaning of each band and where they appear (eg. page header vs banded page header)

4. Recalls how to add groups and work with single vs multiple groups

5. Differentiates between the types of summaries

6. Uses tools to manage, organize and group data and pages including effectively using page breaks

7. Identifies when to use formulas

8. Uses formulas to format data and tables

9. Determines how to best work with images including using dynamic images

10. Uses sub-reports effectively

11. Inserts standard page headers and footers into report

12. Recalls how to embed fonts into report

13. Applies correct formatting, localization, and languages

2. Integrates InterSystems reporting within TrakCare 1. Understands TrakCare report Architecture

1. Applies correct formatting, localization, and languages

2. Recalls how many user-inputted parameters can be used in TrakCare 

3. Recalls how to setup menu for a report and how to add menu to a header

4. Recalls what a security group is and adds menus to security group access

5. Configure TrakCare layout webcommon.report

6. Differentiates between different types of layout fields

3. Supports InterSytems Reports 1. Verifies printing setup

1. Debug using menu or preview button

2. Tests the report by making sure it runs as expected

3. Demonstrates how to run reports with different combinations of parameters

4. Tests report performance with a big data set

5. Identifies error types

2. Uses print history

1. Identifies use cases for the print history feature

2. Recalls the steps to retry printing after a failed print

3. Uses print to history to verify parameters are correctly passed to the parameters in the stored procedure

4. Recalls how to identify a report was successfully previewed or if it encountered errors

Discussão (0)1
Entre ou crie uma conta para continuar
Artigo
· Fev. 7, 2024 6min de leitura

Sending WhatsApp messages from InterSystems IRIS production

In this article we are going to see how we can use the WhatsApp instant messaging service from InterSystems IRIS to send messages to different recipients. To do this we must create and configure an account in Meta and configure a Business Operation to send the messages we want.

Let's look at each of these steps in more detail.

Setting up an account on Meta

This is possibly the most complicated point of the entire configuration, since we will have to configure a series of accounts until we can have the messaging functionality.

Here you can read the official Meta documentation.

First we will create a personal Meta account, thus giving our soul to Zuckerberg:

The next step is the creation of a business account that will allow us to use WhatsApp services in our applications and that will be linked to our personal account:

And then we have registered as developers from here. The next step was, once inside the developers account, to create an application:

Following the instructions in the documentation, we select a type of application "Other":

And a type of company application:

In the last step we will assign the name of the application and link it with our business account to be able to use the WhatsApp functionalities.

Finally, after this long and tedious process of creating several accounts, we will have our application ready to configure it with the WhatsApp functionality.

You can see in the menu on the left that a new option called Whatsapp will be available once configured. By accessing the API Setup option you can see everything we need to connect to the messaging functionality.

What we see on this screen:

  • We have a test number from which the messages will be sent (From) to our recipients identified with an ID that we will later use to make calls to the API from our IRIS.
  • We have defined a destination number (To) to which we will send our test messages (we must register it previously to accept receiving the messages).
  • An Authentication Token has been generated with a validity of 24 hours.
  • In our call we must send our data in JSON format as follows:
    { 
        "messaging_product": "whatsapp", 
        "to": "", 
        "type": "template", 
        "template": 
            { 
                "name": "hello_world",
                "language": 
                    { "code": "en_US" } 
            } 
    }
     

For this example we are going to use a message template, although we could send any text. As you can also see, all we need is to make a POST HTTP call to the URL defined in the example:

https://graph.facebook.com/{{Version}}/{PhoneID}/messages

For our example we are going to create 3 different templates, so we can see how we could configure different messages. We have accessed this option from the link shown in step 2 of the API configuration.

Well, now we have everything to start sending messages to our client. Let's proceed to configure our IRIS instance.

Configuring IRIS

For our example we are going to configure a small production that simulates the reception of HL7 ORU type messages with glucose level data for a certain patient. Depending on the level received, we will send the patient one message template or another.

Business Service

We will start by creating a Business Service to capture HL7 messaging from a file:

And you will receive a message like this:

MSH|^~\&|HIS|HULP|APP||20230330133551||ORU^R01|71186|P|2.5.1
PID|||1502935519^^^SERMAS^SN~184001^^^HULP^PI||CABEZUELA SANZ^PEDRO^^^||20160627|M|||PASEO JULIA ÁLVAREZ 395 3 E^^MADRID^MADRID^28909^SPAIN||6XXXXXXXX^PRN^^PEDRO.CABEZUELA@GMAIL.COM|||||||||||||||||N|
PV1||O|||||0545128263Q^MARTÍNEZ FERNÁNDEZ^SUSANA^^MD^^^^|||||||1|||||173815|||||||||||||||||||||||||20230330133551|20230330133551
ORC|1|921099|131777||||^^^20231126133551||20230330133551|||0269410060K^URDANETA LÓPEZ^SUSANA^^MD^^^^|HULP||||||||HULP||||||||LAB
OBR|1|921099|131777|LAB^LABORATORY^L||||||||||||0269410060K^URDANETA LÓPEZ^SUSANA^^MD^^^^|||||||||F
OBX|1|NM|GLU^Glucosa|1|200|mg/dL|70-105|N|||F|||20231123124525||Lectura desde dispositivo de control|1|

Business Process

Once the message is received, we will send it to a Business Process that will transform the HL7 message into a type of message created by us and that will have the information that is relevant to us. As you can see it will be a very simple BPL:

If we take a look at the transformation we will see how, depending on the glucose level data and the defined limits, we will indicate the type of message template that we are going to use:

Business Operation

This component will be responsible for sending the POST call to the WhatsApp server. To do this, we will define the EnsLib.HTTP.OutboundAdapter class as the component's adapter. Here you can see the class code:

Class Whatsapp.BO.WhatsAppBO Extends Ens.BusinessOperation
{

Parameter ADAPTER = "EnsLib.HTTP.OutboundAdapter";
Parameter INVOCATION = "Queue";
Property Version As %String(MAXLEN = 5);
Property PhoneNumberId As %String(MAXLEN = 15);
Property Token As %String(MAXLEN = 1000);
Parameter SETTINGS = "Version,PhoneNumberId,Token";
Method SendMessage(pRequest As Whatsapp.Message.WhatsAppRequest, Output pResponse As Whatsapp.Message.WhatsAppResponse) As %Status
{
    set tSC=$$$OK
    set body = {
      "messaging_product": "whatsapp",
      "to": "",
      "type": "template",
      "template": {
          "name": "",
          "language": {
              "code": "en"
          }
      }
    }
    do body.%Set("to", pRequest.telephone)
    do body.template.%Set("name", pRequest.template)
    $$$TRACE(body.%ToJSON())

    set request = ##class(%Net.HttpRequest).%New()
    set request.Authorization = "Bearer "_..Token
    set request.ContentType = "application/json"
    set request.Https = 1
    set request.SSLConfiguration="default"
    set request.Location = "/"_..Version_"/"_..PhoneNumberId_"/messages"
    do request.EntityBody.Write(body.%ToJSON())    

    set status = ..Adapter.SendFormData(.response,"POST",request)
    $$$TRACE(response.StatusCode)

    set pResponse = ##class(Whatsapp.Message.WhatsAppResponse).%New()

    Quit tSC
}

XData MessageMap
{
<MapItems>
  <MapItem MessageType="Whatsapp.Message.WhatsAppRequest">
    <Method>SendMessage</Method>
  </MapItem>
</MapItems>
}

}

We have defined 2 new parameters for the component in which we will indicate:

  • The version of the API we will invoke.
  • The identifier of the phone from which the message will be sent and which we have seen previously in the information of our Meta developers account application.
  • The token that we will send in the header of our call (remember that it is valid for 24 hours).

Since the required connection is HTTPS we have created a default SSL configuration:

Well, we would have everything configured to launch our messaging tests. We will try sending 3 HL7 files, each one with a different glucose value for our patient:

  • Value 80: which will generate a notification message indicating that our levels are normal.
  • Value 110: in which it will warn us that we are exceeding the limit and will urge us to exercise to lower the levels.
  • Value 200: in which it will alert us of our level and urge us to visit a medical center.

Let's copy the messages to the defined folder:

*Attention, if you want to test the example with the associated project you must configure the HL7 message with your phone number (search and replace the value 6XXXXXXXX in the example message) and modify the DTL to take into account the national prefix of your test phone .

Let's see the result:

Here we have our 3 messages received. Another new success from InterSystems IRIS! If you have any questions or comments, you can write them in the comments and I will be happy to answer you.

1 Comment
Discussão (1)1
Entre ou crie uma conta para continuar