• Index
  • » Users
  • » Ortwin
  • » Profile

Posts

Posts

Hi Neha,

Unfortunately I cannot find your attachment. Could you repost it, please?

thanks,
Ortwin

Dec-19-12 12:35:22
Category: Saddle Forum
Forum: User

dzungdev wrote:


1. Right click to Name and "add Child" to create Given_Name leaf.

Btw. especially if you want to create larger templates it might be more convenient using the shortcuts instead of the context menu.

ALT-RIGHT :  add child
ALT-UP :        add sibling before field
ALT-DOWN : add sibling after field
F2 :                 change field name

There are many more shortcuts for changing attribute values. You will find further details here.

Dear Dzung,

I had a glance on your schema (referring to wf-phis-hl7-new). I am not exactly sure what you want to do but judging from your schema configuration, you want to send an ack from OMP_O09Processor as well as from MFN_M01Processor (there you configured a response service).

If you want to send an Ack from these services, you have to configure a reply path back to the inbound endpoint the ACK should be sent through. This part is missing in the configuration. However you configured a path back from the logging service (Log_1), which is no response endpoint and therefore unable to send explicitly anything back to an inbound channel.

The correct workflow schema should look like this:
/images/agorapro/attachments/68/mini_CorrectedSchema.png

Hope that helped.

regards,
Ortwin

Hi Dzung,

dzungdev wrote:


I think I should use getValueAsString().

Yes, that is correct. If the value has been parsed as a String, Saddle doesn't know about the date format but this would be needed for parsing it into a date object. Thus, the correct way for obtaining a Date object would be to define the field as Date-field and specify the date format in the appropriate field attribute.

Where possible, Saddle tries to automatically transform between value types. For example it is possible to obtain the value of a date type as String or the value of a string field as Integer (if the value actually represents one). I added a convenience function to the API that allow you to obtain the value of a String-Field as Date object by providing the date format:

Code:

public Date getStringValueAsDate(String p_dateFormat)

dzungdev wrote:


I just have concern that even I didn't use the getValueAs... method properly, in this case why the error notice me about boolean type.

You are right with that and you actually found another bug. The API provides an internal function for transforming the value type to human readable text. There I was checking the field type instead the value type. Fixed & thank you for uncovering it.

I committed the changed code to the SVN & changes should be available with the next nightly build.

kind regards,
Ortwin

Nov-14-12 17:27:14
How to create HL7 Template from HL7 xsd scheme
Category: Saddle Forum
Forum: User

Hi Dzung,

I just saw, I still owe you an answer regarding this issue:

We checked our xsd analyzer and it works correctly. The reason for the additional level of ADT_A02 is because an xml schema always describes an xml-structure. For an xml-structure the main tag - in this case ADT_A02 is part of the actual message. Thus this is correct as the root node is always the template name and not part of the actual message.

However, in this case HL7 "abuses" the xml-schema for describing a message format, which is not xml but in delimited format and therefore the second instance of ADT_A02 is not needed. This means either manual refinement after the template has been generated or using a template from our HL7 template libraries (as you did already).

regards,
Ortwin

Hi Dzung,

your client is sending to port 10000 but regarding your configuration your are listening at localhost port 10001 for connections:

/images/agorapro/attachments/68/mini_1351688497_InboundHl7Config.jpg


Further, if you also want to route an ACK from the consuming system back to the sender, you have to set the exchange pattern to request/response.

What you want to do seems quite similar to the "Partially Editable Bidirectional Communication" example of the HL7 tutorial.
Maybe you want to have a look at this? You will find this tutorial in the Nightly Build section of the download area.

regards,
Ortwin

Oct-31-12 11:36:14
How to create HL7 Template from HL7 xsd scheme
Category: Saddle Forum
Forum: User

Thanks Dzung but I can't find the attachment.

It's probably because we changed the way you add attachments. After you uploaded it, it appears underneath your post and you have to click "insert" to insert it into your post.

regards,
Ortwin

Oct-30-12 11:16:04
How to create HL7 Template from HL7 xsd scheme
Category: Saddle Forum
Forum: User

Hi Dzung,

not having the XSD you are referring to at hand, I can only guess that the Rapid Prototyper is not yet perfect. We will have a look at that later on.

But that's no real problem as you can easily change the generated template by moving all child nodes of the second ADT_A02 one level up (drag&drop) and deleting the second ADT_A02 node (press delete-key).

The most convenient method, however, is to use a predefined template from our template library. You will find a template library for every HL7 version in the download section:

/images/agorapro/attachments/68/mini_TemplateLibs.jpg

Download the corresponding zip file, extract it into a folder and import the template you need into your project:

/images/agorapro/attachments/68/mini_ImportTemplate.jpg

I hope that helps,
Ortwin

Hi Mishra,

you need to create a template from your custom xml-structure. The fastest (and most convenient way) is to use the Rapid Prototyper.
You will find more information about the Rapid Prototyper here.

Afterwards, you use the generated template with the MixedStringToMessage-transformer for parsing your XML-files into Saddle.

regards,
Ortwin

Oct-08-12 19:23:10
While trying to run the current Instance of saddle (0.8) on mule 3.2.
Category: Saddle Forum
Forum: User

Dear Mishra,

sorry for the delay, unfortunately there was another issue interfering.

Judging form the first glance I had on your posted log file, it seems like your mule-config file is invalid:

Mishra wrote:

Caused by: org.mule.api.config.ConfigurationException: Line 96 in XML document from URL [file:/C:/Mule/apps/PartiallyEditableBidirectionalCommunication/mule-config.xml] is invalid

Indeed, it contains in line 96 an invalid entry as it is missing parameters:

Code:

<ftp-ee:connector name=""/>

Thus I recommend you to either remove this line from your config (or remove the connector definition in the graphical editor) or simply use the vanilla config file that comes with the tutorial.
If that doesn't work, let us know & we will have another, more detailed look.

I hope I could be of help.

Ortwin

Jun-26-12 12:00:42
Which Endpoint can be use to send message to Java Class
Category: Saddle Forum
Forum: User

cheikh wrote:


I want to transform it cause my Java Class can't treat mule's objects.
So i want to transform it to: baytArray, InputStream or something like that, something that i can use in my Java Class.

If I got you right, you simply want to access the content of your CDA document with Java.
If that is the case, I would recommend you using the Saddle infrastructure.

For doing so, you first need the payload of the Mule-Message, which you have to cast to Field. Than you can easily access all elements of your CDA-document by using the Field-API.
Here you can find more information about the Field-API.

A view examples about using the API can be found here and also in the Saddle-tutorials.

If you need more assistance, it would be great if you could post your CDA and Java class (we increased the attachment size limit).

Please let me know if this helps.

regards,
Ortwin

Jun-26-12 10:44:09
Which Endpoint can be use to send message to Java Class
Category: Saddle Forum
Forum: User

Hi Cheikh,

What might be the best way for doing this depends on what you intend to do.
After the transformation, you CDA-file is already provided as a java class.
May I ask why you want to transform it first to a String and send it then to a Java-class?
How should this String look like?

regards,
Ortwin

Jun-22-12 13:57:21
Parsing xml file using xsd
Category: Saddle Forum
Forum: User

cheikh wrote:

Just if you can tell me, when changes approximately will be done ?

In a few hours, latest.

Update: A little bit delayed but all changes are now online and you should now experience the announced behavior.

Jun-22-12 13:06:28
Parsing xml file using xsd
Category: Saddle Forum
Forum: User

Hi Cheikh,

cheikh wrote:


When i use the prototyper to create my template, the generated template is not corresponding exactly to what it supposed to be.

Hmm, seems to me like it is correct. What do you think is missing/incorrect? (besides the issue described below)

cheikh wrote:


As you can see, for the tag <TEXT> there is just the childrend coresponding to the Attributs and i can't access to the value(in red) of the tag in the maping

You are right about that. The reason is that attributes are represented by child fields of the actual tag, which have the field type attribute. BUT: the problem here is that currently the message API only allows to assign values to and read values from leaf fields. That is an invalid behavior in the case, you described.

Workaround: When you delete the two tags representing the attributes of the field "text", you will be able to read and write it's content.

We will change the message API to allow setting and removing values to XML leaf fields with attributes. Further, we will also add support for Base64 encoding and decoding for binary fields.  That should ease your work with such documents.

As soon as these changes have been done, I will compile a new version and indicate it in this thread.

kind regards,
Ortwin

Jun-19-12 12:35:34
ExcelToMessageTransformer does not process office 2010 ooxml
Category: Saddle Forum
Forum: Development

peredime wrote:


java.lang.IllegalArgumentException: The workbook could not be initialized because the class of the incoming message is not supported. The class was: "class org.mule.transport.file.ReceiverFileInputStream"
    at lu.tudor.santec.transformers.ExcelToMessageTransformer.transformToMessage(ExcelToMessageTransformer.java:262)
    at lu.tudor.santec.transformers.ExcelToMessageTransformer.transformToXMLString(ExcelToMessageTransformer.java:321)
    at lu.tudor.santec.mule.transformers.ExcelToMessageTransformer.doTransform(ExcelToMessageTransformer.java:47)
    + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)

Reason was that the input-streams used by Mule are not resettable. Now an alternative way for filetype autodetection has been implemented that fixes this issue.
You can find the fixed version in the download-section

regards,
Ortwin

Jun-14-12 17:44:00
ExcelToMessageTransformer does not process office 2010 ooxml
Category: Saddle Forum
Forum: Development

Hi Peredime,

peredime wrote:

I will try out the changes after the nightly build.

The transformer has been changed and committed to SVN. Main changes so far:

  • Improved Parsing Algorithm: If a field with children is parsed, parsing will stop now when either one of the children is required but does not contain a value or if none of the children contains values (in case of all children are optional)

  • Automatic File Type Detection: Excel file type (xls, xlsx) will now be detected automatically by analyzing file header. There is no need anymore to specify the file type & transformer can now treat both on the fly.

  • "Optional" Attribute: For determining if a field is optional or required, the "optional" attribute will  now be interpreted instead of attribute "Minimum occurrence"

  • Date Cells: Excel fields containing a date should now be read correctly

  • You can find the changed transformer in the latest build in the download section. The transformer itself should already be fully usable. But Matthias still has to do some adaptions in the GUI, thus there might be still some limitations when you use it in the message tester (e.g. suppressed error messages).

    Please let us know if it now works for you and if you need any additional changes.

    regards,
    Ortwin
    Jun-13-12 17:44:31
    If it's possible to create a connection with Microsoft's Sql Azure db?
    Category: Saddle Forum
    Forum: User

    zaaid1989 wrote:

    Ok, i have done it using the jtds driver. I am uploading my connection settings screen shot for any future references to this forum.

    Congratulations, you just made your first contribution to the Saddle-project! Thank you very much for that.

    Would you mind uploading the XML-configuration file for the Azure support, too?

    Thanx,

    Ortwin

    Hi Jacek,

    jacek wrote:


    dispatchMessage(getOutFile()) works just the same as the return getOutFile()  -- Is there a potential problem with dispatchMessage in my case?

    No, not in your current configuration but..

    jacek wrote:


    Next up for me is to replace the file outbound endpoint with an HL7 endpoint. Do you have any hints on triggering out HL7 messages for each row in the database and receiving and verifying ACKs?

    ... that's exactly where you will start to realize the difference:
    While calling return getOutFile() will end the mapping when you send the first row to the HL7 endpoint, you are able to continue to fill your HL7 template with the data from the subsequent row and call dispatchMessage(getOutFile()) for each row you filled in. That way, for each row a new instance of OutFile will be sent to your HL7 Endpoint.

    An example of how to receive and handle an ACK/NAK can be found in the HL7 tutorial, that you can find under "Tutorials" in the download section.

    regards,
    Ortwin

    Jan-12-12 11:05:16
    Category: Saddle Forum
    Forum: User

    Hi matiuslim,

    matiuslim wrote:


    The error messages as shown on below.
    SAXParseException: cvc-complex-type.2.4.a: Invalid content was found starting with element 'hl7:outbound-endpoint'. One of '{"http://www.mulesoft.org/schema/mule/core":annotations, "http://www.mulesoft.org/schema/mule/core":abstract-outbound-endpoint}' is expected.

    Another reason might be that you are using a Snapshot version of Mule 3.2.1, as it seems. Build number of the release version of Mule 3.2.1 Community Edition is 23380. The Build number of the version you are using is 23447.
    Are you using Enterprise or Community Edition of Mule 3.2.1?

    regards,
    Ortwin

    Hi lahvenai ,

    lahvenai wrote:

    'll attach it and a sample of the file I'm trying to read and load here .

    please find attached the modified project. I did not have a chance to test my changes but you will get the idea with it. The mapping has been changed and commented:
    /components/com_agora/img/members/3/mini_lahvenai-Mapping.png

    I changed you flat file parsing template. Key is here to create a branch, that hold all records of the inbound file (I called "Record" ;-). In contrary to the different fields of a record, the field "Record" itself is not of type fixed length but delimited. The delimiter is a carriage return + line feed (<cr><lf>or <wincr>). Further, this branch is optional and repeating. That enables it to deal with empty files as well as with files containing multiple records. Is also assigned specific types to some fields (e.g. Date, Integer, double,  etc.). For fields of type date, you have to provide the date format. So the parser knows, how to interpret the string and create a date object out of it:
    /components/com_agora/img/members/3/mini_lahvenai-flatFile.png

    If you want to check, if the template, you designed, actually corresponds to the expected file format, you can simply do so under the "Template Tester" tab:
    /components/com_agora/img/members/3/mini_lahvenai-flatFileTest.png

    Finally, I also applied slight changes to the destination template. The field "datum" is now of type date, too. I specified the date format "yyyy-MM-dd" that you desire at the outbound side. That way, you don't have to bother about that in the mapping but simply copy the field value, which is a date object:
    /components/com_agora/img/members/3/mini_lahvenai-dbTemplate.png

    lahvenai wrote:

    I want to read three separate files, two in flat file format names A*.txt and F*.txt  and one xml-based filed names P*.xml
    I need to store the data from each file in db-tables and as a final step after the last file run a stored procedure in the db and then extract the data and create a new flat file.
    Is using saddle a suitable solution to this ?

    Sure. I do not see any problems with the described scenario.

    You need a component with 3 inbound channels ("A*.txt", "F*.txt", "P*.xml" ). FilenameRegex or FilenameWildcard-filter will do filtering, if needed.
    At the outbound site you need an outbound channel for each insert statement (if there are different ones), for calling the stored procedure and for creating the flat file. Again, dispatchMessage() should be your choice, if you want to send information to channels within a mapping. If the stored procedure should provide data from the database, you will need an additional inbound channel that is triggered. Our database tutorial should help you to understand how to work with triggered channels.

    Let me know, if this approach works for you.

    kind regards,

    Ortwin



    lahvenai-projectModified.zip

    lahvenai wrote:

    I must be doing something wrong here , I only get one record inserted into to the db .
    And I can't figure out how to loop through all records from the file .
    How to do it ?

    I don't know your current configuration but I think the reason is twofold:

    1. The structure of your inbound template is currently composed to contain only one dataset. Thus, if one file contains several records, you have to adapt the structure of the inbound template. (The "Test Template"-tab of the Template Designer allow you to test your template with sample data.)

    2. You can add instances to every node of a template, meaning you can simple add additional instances to the ParameterSet record of your outbound template and fill it with data. For each instance a record will be created.

    If you want, you can post your project and an a sample file containing at least two datasets and I will have a look at it.

    Hi,

    1. please export your project from Saddle by right clicking on the project name and selecting export project.
    /components/com_agora/img/members/3/mini_ExportSaddleProject.png

    2. Attach it to a post in the forum by clicking the Attachments link underneath the textbox, which you use to enter your posting.
    /components/com_agora/img/members/3/mini_AttachFileToForumPost.png

    regards,
    Ortwin

    Hi lahvenai,

    lahvenai wrote:

    I'm getting this error when trying to run in my Mule instance .
    org.xml.sax.SAXParseException: cvc-complex-type.4: Attribute 'templatePath' must appear on element 'saddle:mixedstring-to-message-transformer'.

    you used a Saddle inbound transformer and forgot to specify the template that  should be used to parse the message in (Attribute "Template Path" in Saddle):
    /components/com_agora/img/members/3/mini_Template-Path-Property.jpg
    If this attribute is specified, Saddle will generate the transfomer like follows:

    <saddle:mixedstring-to-message-transformer name="TransformToData" templatePath="<'TEMPLATE NAME>" provideAsXML="false"/>


    Please have a look at the "Flat File Parsing"-tutorial that you can find in the download section, if you don't know how to create a template file. Don't hesitate to post, if you need further clarification.

    regards,
    Ortwin
    Nov-28-11 18:44:09
    Having trouble running my project in linux, works fine in windows
    Category: Saddle Forum
    Forum: Installation

    I assume this issue solved due to the lack of feedback.

    Nov-23-11 19:09:04
    News about current development activities and ideas
    Category: Saddle Forum
    Forum: Development

    Bidirectional Communication & HL7

    you might remember the issue we had with assigning a correlation id to a unique id, which has been explained a few posts above. The cause is that the unique ID of a message is only remembered when it left a service. Mule checks for the existence of a unique message id that is identical to the the corelation-id of the message sent to the response router. As the original message has not left the service at this point of time, no match is found. From our point of view this seems like an architectural bug of Mule as it prevents the access to a reply router of the same service.

    Not wanting to modify the underlying logic to guarantee compatibility with all vanilla Mule versions, we decided to bypass this issue by using a pass-through service that is set before the actual service that has to send information back to an inbound channel.

    This results in a slightly higher complexity of the resulting mule configuration file but is encapsulated in the GUI by the introduction of a new configuration element called ReplyComponent:
    /components/com_agora/img/members/3/mini_ReplyComponent-Icon.png

    The ReplyComponent allows the creation of bidirectional configurations like the following, which are needed for e.g. HL7 communication:

    /components/com_agora/img/members/3/mini_GenerateAckInService.png
    Depending on the content of the retrived message, the service sends back an ACK to the sender and continues with the processing of the received message.

    /components/com_agora/img/members/3/mini_FullyEditableBidirectionalInformationExchange.png
    An inbound message is modified and sent to an outbound system. The response of the outbound system is also modified and sent back to the inbound system. In both examples, the external systems are connected via TCP/IP and the same connection is used for sending and receiving.


    If you want to send data to an inbound channel from within a service, a simple function call in your mapping logic will do the job:

    sendAsyncResponse(<ACKNOWLEDGEMENT MESSAGE>, <RECEIVED MESSAGE>);

    The later nightly builds of Saddle (available in the download section) contain  support for this. Tutorials describing how to implement these scenarios will be released with Saddle v0.8

    Complete template libraries for all versions of HL7 v2.x, an acknowledgement-based protocol that is widely used in the healthcare sector, are now publicly available in the download section. The libraries contain predefined templates for all message types of the respective HL7 version. Please use these with the latest nightly builds.

    Best regards,
    The Saddle Team

    • Index
    • » Users
    • » Ortwin
    • » Profile

    Board Info

    Board Stats
     
    Total Topics:
    108
    Total Polls:
    0
    Total Posts:
    759
    User Info
     
    Total Users:
    740
    Newest User:
    Ricci
    Members Online:
    0
    Guests Online:
    8

    Online: 
    There are no members online