Pesquisar

Artigo
· Ago. 21 3min de leitura

Dejad un rastro de migas de pan en el código en ObjectScript

ObjectScript puede parecer solo otro lenguaje de programación, pero aquí está el giro:

Vuestro código aquí puede vivir para siempre (sí, incluso después de que os hayáis pasado a otro proyecto). Por eso es importante mantenerlo ordenado, fácil de leer y a salvo de errores misteriosos.

(Una guía para principiantes para mantener vuestro código ordenado, amigable y preparado para el futuro)

Bienvenidos a la jungla de ObjectScript, donde vuestro código puede tener un alcance global y ser persistente por naturaleza.
Mantengamos las cosas limpias, legibles y resistentes a errores.

1️⃣ Nombra como si lo dijeras en serio

Las variables y globales deberían tener nombres como si tuvieran un perfil en LinkedIn.
Saltad las x, y, z; id por patientID, invoiceTotal, ^MyApp("Users",...).

Set patientID = 1023
Set ^Hospital("Patients",patientID,"Name") = "Marshmallow"

💡 Por qué: cuando volváis a esto en 6 meses, “Marshmallow” seguirá teniendo sentido, ^H(1,"N") no.

2️⃣ Conciencia sobre el "calentamiento global" 🌍

Los globales son potentes, pero no arrojéis datos ahí como si fuera un cesto de ropa sucia.

Poned un prefijo con el nombre de vuestra aplicación para evitar colisiones.
Mantened el orden de las claves lógico: la categoría más grande primero, los detalles al final.

Set ^PetStore("Cats","Persian",1,"Name") = "Luna"

💡 Consejo: si no etiquetaríais una caja como “Cosas”, no llaméis a un global ^DATA.

3️⃣ El tamaño de los métodos importa 🐹

Si vuestro método es más largo que la paciencia de un hámster, divididlo.
Los métodos pequeños y enfocados son más fáciles de probar, reutilizar y mantener.


ClassMethod GetPatientName(patientID As %Integer) As %String
{
    Quit ^Hospital("Patients",patientID,"Name")
}

4️⃣ Atrapad esos errores escurridizos 🎣

No dejéis que vuestro código tenga un problema en producción. Envolved las operaciones peligrosas en Try/Catch.

Try {
    Write ^Hospital("Patients",9999,"Name")
}
Catch ex {
    Write "Error: ", ex.DisplayString(), !
}

💡 Por qué: porque los fallos silenciosos son como los gatos, esconden el desastre hasta que es demasiado tarde.

5️⃣ Comentad como si os importara 💌

Los comentarios son cartas de amor para vuestro yo futuro. Mantenedlos cortos, relevantes y actualizados.

// Assign the patients therapy cat
Set ^Hospital("Patients",patientID,"Pet") = "Mittens"

Los buenos hábitos de programación van más allá de cualquier lenguaje; son universales.
Quizás sois campeones de los nombres claros para variables, maestros en el manejo de errores sólido, creyentes en el desarrollo guiado por tests, o tenéis algún truquito peculiar que hace que vuestro código brille.
Sea lo que sea, ¡compartidlo! Publicad vuestras mejores prácticas, lecciones aprendidas o sabiduría en pequeñas dosis en los comentarios, y creemos juntos un tesoro de consejos para ayudar tanto a principiantes como a desarrolladores experimentados a escribir código más limpio, inteligente y eficiente. 🚀

Discussão (0)1
Entre ou crie uma conta para continuar
Artigo
· Ago. 21 2min de leitura

Comment fusionner des comptes existants (mettre à jour l'e-mail) dans l'écosystème des développeurs InterSystems

Bonjour la Communauté,

Vous pouvez parfois avoir besoin de fusionner plusieurs comptes ou simplement de mettre à jour l'adresse e-mail que vous utilisez sur les différents portails de l'écosystème des développeurs InterSystems. Chaque portail fonctionnant différemment, voici un guide pour vous accompagner dans cette démarche.

Modifier votre adresse e-mail

Si vous souhaitez utiliser une adresse e-mail différente (par exemple, une adresse professionnelle plutôt qu'une adresse personnelle, ou inversement), voici comment la mettre à jour sur tous les portails :

1. Mettez à jour votre adresse e-mail dans InterSystems SSO. Pour cela :

  • Suivez les instructions à l'écran pour modifier votre adresse e-mail.

2. Avec votre nouvelle adresse e-mail, connectez-vous à la Communauté des développeurs et/ou à Open Exchange.

3. Ne vous connectez PAS au Portail d'idées. Commencez par envoyer un message direct à @Irène Mykhailova avec votre ancienne et votre nouvelle adresse e-mail. Une fois la modification confirmée, vous pourrez vous connecter au Portail d'idées. Sinon, vous créerez un nouvel utilisateur sur le Portail d'Idées.

4. Ne vous connectez PAS à Global Masters ; envoyez un message à @Olga Zavrazhnova avec votre ancienne et votre nouvelle adresse e-mail. Une fois la modification confirmée, vous pourrez vous connecter au portail Global Masters. Sinon, vous devrez fusionner vos comptes.

Fusionner vos comptes

Si vous avez déjà plusieurs comptes enregistrés sur l'Écosystème des Développeurs et souhaitez fusionner vos comptes, veuillez envoyer un message direct à @Iryna Mologa avec votre nouvelle et votre ancienne adresse e-mail. Les deux comptes doivent avoir été connectés au moins une fois sur les plateformes respectives. Veuillez noter que la fusion de comptes ou le transfert de données est impossible sur le Portail d'Idées.


Nous espérons que cet article vous aidera à gérer vos comptes sur l'Écosystème des Développeurs. Si vous avez des questions ou des suggestions, n'hésitez pas à les partager dans les commentaires de cet article.

Discussão (0)1
Entre ou crie uma conta para continuar
Pergunta
· Ago. 21

How to Handel large data like 50 lac characters support in Base64 binary in Binary FHIR Resource ? i

I try the Large data Save in FHIR server in Binary Resource but it's failed 

Methed: Post , URL: fhirservers/fhir/r4/Binary 

I hit the API but the record not save and same API but base64 data length is 3 lac than it's save without faile.

I pass data on this formet

{

  "resourceType" : "Binary",

  // from Resource: id, meta, implicitRules, and language

  "contentType" : "<code>", // R!  MimeType of the binary content

  "securityContext" : { Reference(Any) }, // Identifies another resource to use as proxy when enforcing access control

  "data" : "<base64Binary>" // The actual content

}

 

I got this Response is 

{

    "resourceType": "OperationOutcome",

    "issue": [

        {

            "severity": "error",

            "code": "exception",

            "diagnostics": "5002",

            "details": {

                "text": "ObjectScript error: <MAXSTRING>%GetNext+2^%Iterator.Object.1"

            }

        }

    ]

}

How to fix this, or what is the solution for that? 

2 Comments
Discussão (2)2
Entre ou crie uma conta para continuar
Pergunta
· Ago. 20

Enabling IPM across namespaces

I've been trying to set up a script I can run after installing an instance to enable IPM across all namespaces. I have been able to install IPM successfully using

set r = ##class(%Net.HttpRequest).%New(),
    r.Server="pm.community.intersystems.com",
    r.SSLConfiguration="ISC.FeatureTracker.SSL.Config" 
d r.Get("/packages/zpm/latest/installer"),
    $system.OBJ.LoadStream(r.HttpResponse.Data,"c")

and then running the zpm commands

repo -r -n registry -url https://pm.community.intersystems.com/ -user "" -pass ""
enable -map -globally

This seems to enable me to run further zpm commands in the namespace where I initially installed IPM. In other namespaces, I can see that IPM is installed, but I do not seem to have a registry configured and cannot install packages from it unless I first run a similar 'repo -r -n registry...' command in each namespace. Is this expected? I thought 'enable -map -globally' was supposed to avoid the need to do that, but I may be missing something.

4 Comments
Discussão (4)4
Entre ou crie uma conta para continuar
Pergunta
· Ago. 20

SOAP.OutboundAdapter question

Using a WSDL and the SOAP wizard I created a WebServiceClient, and Operation to send an encoded message to a Vendor. But the vendor is now sending back an HL7 in the SOAP response.

I tried updating the Operation to Extend EnsLib.HL7.Operation.ReplyStandard, but still use the EnsLib.SOAP.OutboundAdapter. When I did this it broke my Operation and would not compile with the following error...

ERROR #5478: Keyword signature error in osuwmc.Nutrition.HL7SoapOperation:Method:SendMessage, keyword 'method argument/s signature' must be 'EnsLib.HL7.Message,EnsLib.HL7.Message,%Library.String' or its subclass

  > ERROR #5030: An error occurred while compiling class 'osuwmc.Nutrition.HL7SoapOperation'

Detected 1 errors during compilation in 0.015s.

The WebServiceClient is expecting "SendMessage"

Set tSC = ..Adapter.InvokeMethod("SendMessage",,pRequest.key,.encodedMessage)

So how do I get the Operation to send with the Data Class Structure they require but receive an HL7 ACK back to parse out and error if they send back an AR, AE, CR, etc...

We are looking for a way that if we receive an HL7 ACK AR response to ensure that the message keeps sending.

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