Well, next time I need to read the documentation in depth.

There is a base method to check if a class extends of other one

set obj = ##class(MyLibrary.ChildClass01).%New()

## this retrieves 1
w obj.%Extends("MyLibrary.ParentClass")

## this retrieves 0
w obj.%Extends("MyLibrary.ParentClassFake")

This has been a "Rubber duck", this is a sample of guide-book of rubber duck. wink

More info Clase %Library.SystemBase

Best regards,

Francisco López

Hi,

Try the following code. It only works if the class parent is Ens.DataTransformDTL

// Create a query to get only my class (in MyClass and sub folders)

set query="SELECT ID FROM %Dictionary.ClassDefinition WHERE ID LIKE 'MyClass.%' AND super='Ens.DataTransformDTL'"

set tStatement = ##class(%SQL.Statement).%New() 

set qStatus=tStatement.%Prepare(query)

set tResult = tStatement.%Execute()

while tResult.%Next() {

   set dtlName = tResult.%Get("ID")

   set classObject = $CLASSMETHOD(dtlName ,"%New")
   
   write !,"DTL: "_dtlName
   write !,"Source type: "_classObject.GetSourceType()
   write !,"Target type: "_classObject.GetTargetType()
   write !

}

Remember: It works only if the class inherits from Ens.DataTransformDTL , if you know which class is the one that inherits the DTL you want to examine, change the name of the value of 'Super' in the previous query

Best regards,

Francisco Lopez

Please, have a look the following links:

Ensemble XML Virtual Document Development Guide

Loading XML Schemas into Ensemble

Using File Adapters with Ensemble

Once you have the content of the file, you will be able to make the necessary transformations in HL7 to make the outbonding operation to out the content.

Best regards,

Francisco López

Thanks Eduard,

Note: I've udpdated my comment, to show that there is two customers

Currently we are not able to rename the link of the Client1 to http://localhost:57772/api/myprocess/Client1/method1, the new customer will have this prefix without problem (http://localhost:57772/api/myprocess/Client2/method1)

Now we have solved this problem adding the forward in Class1, and not using the My.Code.BS.ApiRoute.

Of course, In Security - Applications - Web Applications, I've defined the Dispatch class to My.Code.BS.Class1

Next iteration we'll try to change the URL of Client1 and use the ApiRoute class.

Best regards

I've tried to forward to "class1" when Prefix is nothing (or "/") and other prefix ("/client2") to "class2"

XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ]
{
<Routes>        
    <Map Prefix="/" Forward="My.Code.BS.Class1" />
    <Map Prefix="/Client2" Forward="My.Code.BS.Class2" />
</Routes>
}

In Security - Applications - Web Applications, I've defined the following entry

Then I've called using the following links

  1. http://localhost:57772/api/myprocess/method1 (I'm calling to a method in Class1)
  2. http://localhost:57772/api/myprocess/Client2/method1 (I'm calling to a method in Class2)

The first link doesn't work (404 Not found), the second one works fine.

Is not possible to add a prefix for link 1 because this is the current link for class1 in production environment, the new deploy is for class2

Any idea?