¡Hola César! Quizás no esté activo el servicio de telnet:
set p("Enabled")=1set sc = ##class(Security.Services).Modify("%Service_Telnet", .p)- Inicie sesión para enviar comentarios
¡Hola César! Quizás no esté activo el servicio de telnet:
set p("Enabled")=1set sc = ##class(Security.Services).Modify("%Service_Telnet", .p)Buenas, eso tiene pinta de que hay una redirección a la URL a la que estás invocando.
@Jaume Marcet ¿Has podido probar el código?
Hola @Jaume Marcet!
Echa un vistazo a este código de ejemplo que me ha sugerido nuestro amigo el chatbot de IA:
Class objectscript.postXML
{
ClassMethod test() {
Set HTTPRequest = ##class(%Net.HttpRequest).%New()
Set HTTPRequest.ContentType = "text/xml"Set HTTPRequest.NoDefaultContentCharset = 1Set HTTPRequest.Server = "wph.foactive.com"// Specify server address hereSet HTTPRequest.Location = "/ITOMCZ"// Specify location or endpoint here// Modify headers if necessaryDo HTTPRequest.RemoveHeader("User-Agent")
Do HTTPRequest.RemoveHeader("Accept-Encoding")
Do HTTPRequest.RemoveHeader("Connection")
Do HTTPRequest.SetHeader("Expect", "100-continue")
// Open XML file and copy its content into the request bodySet RequestXML = ##class(%Library.File).%New("c:\\path\\to\\your\\file.xml") // Specify file path hereDo RequestXML.Open("RS")
Do HTTPRequest.EntityBody.CopyFrom(RequestXML)
Do RequestXML.%Close()
// Send the requestSet sc = HTTPRequest.Post(HTTPRequest.Location)
// Check the responseIf$$$ISOK(sc) {
Write HTTPRequest.HttpResponse.StatusCode, !
Write HTTPRequest.HttpResponse.Data.Read(), !
} Else {
// Handle errorsWrite"Error in request: ", $System.OBJ.DisplayError(sc), !
}
}
}O bien modificando el parámetro de SendRequest de 1 a 0:
..SendRequest(message,0)Ya que con el valor 1 que le indicas estás diciendo que la llamada sea asíncrona:
.png)
¿Has probado usando SendRequestSync en lugar de SendRequest?
Y a Dios gracias.
Gran artículo @Kurro Lopez pero se te han perdido algunas de las imágenes:
.png)
Podemos asegurar que no tomaremos ningún tipo de represalia sobre aquellas personas que eliminen su cuenta, a título corporativo.
Lo que no podremos evitar es que otros miembros de la comunidad persigan y den su merecido a todos los traid...ex-miembros.
Pues igual resulta un poco kafkiano, pero para calcular la diferencia entre la hora local y la hora UTC puedes hacer un cálculo tal que así:
##class(%Library.UTC).Diff(##class(%Library.TimeStamp).DisplayToLogical($zdatetime($horolog,3)),##class(%Library.UTC).ConvertLocaltoUTC($zdatetime($horolog,3)))/3600En ese ejemplo cojo la hora local con el DisplayToLogical y la hora UTC con el ConvertLocaltoUTC y calculo la diferencia en segundos, la cual la divido entre los segundos que tiene una hora et...voila! Ya tienes la diferencia de horas entre hora local y UTC, ahora sólo tienes que concatenar esa diferencia con tu hora local y tendrías lo que estás buscando.
Bueno, está bastante bien explicado en la documentación oficial, pero si es necesario, se hará:
https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cl…
Prueba a activar el Soporte SSL/TLS y selecciona una configuración SSL/TLS genérica que tengas configurada.
Parece que has hecho una llamada HTTP en lugar de HTTPS que requiere el puerto 8743. ¿Podrías confirmarlo?
Quizá sea algún problema de CORS, ¿podría ver la traza de HTTP que queda en el web gateway?
Buenas @Francisco.López1549.
Para una demo que tuve que hace utilicé un simple Ens.InboundAdapter en el que configuré una simple consulta SQL a la tabla que quería controlar:
Class Local.BS.GetAppointmentBS Extends Ens.BusinessService
{
Property Target As Ens.DataType.ConfigName;Parameter SETTINGS = "Target:Basic";Parameter ADAPTER = "Ens.InboundAdapter";
Method OnProcessInput(pRequest As%RegisteredObject, pResponse As%RegisteredObject) As%Status
{
set tSC = $$$OKset selectAppointments = "SELECT PatientId, Facility, AppointmentId FROM Local_Object.Appointment WHERE AppointmentDate = ?"set statementAppointments = ##class(%SQL.Statement).%New()
set statusAppointments = statementAppointments.%Prepare(selectAppointments)
if ($$$ISOK(statusAppointments)) {
set resultSetAppointments = statementAppointments.%Execute($H+1)
if (resultSetAppointments.%SQLCODE = 0) {
$$$TRACE($ZDT($H+1,4))
while resultSetAppointments.%Next() {
$$$TRACE("Consulta con resultados")
set appointmentRequest = ##class(Local.Message.PatientInfoRequest).%New()
set appointmentRequest.PatientId = resultSetAppointments.%GetData("PatientId")
set appointmentRequest.Facility = resultSetAppointments.%GetData("Facility")
set appointmentRequest.AppointmentId = resultSetAppointments.%GetData("AppointmentId")
set tSC=..SendRequestAsync(..Target, appointmentRequest)
}
}
}
Quit tSC
}
}
Le configuré un bonito intervalo de llamada:
.png)
Y con esto para mi demo fue suficiente.
Para tu caso necesitarías además controlar un campo que te permita identificar los registros nuevos o modificados (que es lo que hace en EnsLib.SQL.InboundAdapter por debajo), si tu tabla dispone de un campo de tipo fecha que refleje la última actualización/creación te bastará con almacenar en un global cuando fue la última vez que lanzaste una consulta para buscar todos los nuevos registros entre la ejecución actual y la anterior.
Si no dispones de un campo de última actualización puedes usar siempre la clave primaria en el caso de que sea un tipo numérico autoincremental, en ese caso sólo podrías controlar los nuevos registros insertados. La implementación sería igual al punto anterior, grabas el último identificador en un global y a la siguiente ejecución buscas todos los registros mayores al identificador del global.
En mi infancia teníamos el juego "Animal, vegetal o mineral" del Amstrad CPC que funcionaba exactamente igual:
A priori debería dar igual la versión de IRIS porque la Community me parece que no está limitada, pero si lo que vais a hacer es algo más corporativo deberíais usar vuestra licencia de IRIS licenciada.
Perdona, que te contesté desde el móvil y me comí la URL:
https://community.intersystems.com/post/setting-your-own-intersystems-o…
¡Buenas @Laura Blázquez García !
Por aquí tienes un artíc@Evgeny Shvarov al respecto de la creación y publicación de proyectos en el IPM, básicamente es añadir el archivo module.xml con determinados parámetros para que capture el código que quieras publicar. Posteriormente le mandas un mensaje y el incluye vuestro proyecto al repositorio del IPM.
¿El fichero XSD tiene permisos para que pueda ser leído por cualquier usuario?
¿Has probado con la notación: file:///tucarpeta/tusubcarpeta/tuarchivo.xsd?
Buenas @Laura Blázquez García, no soy muy experto en temas de OAuth2 pero quizás este artículo os pueda resultar de utilidad:
https://community.intersystems.com/post/oauth-authorization-and-intersy…
¿Es posible que estéis almacenando la cookie en el explorador de internet pero no la estéis enviando al servidor de OAuth en la request?
Buenas @Laura Blázquez García, acabo de desplegarlo en mi equipo y no he tenido ningún problema en utilizar la opción de Discovery and Save de la configuración del cliente OAuth2:
.png)
Elimina la configuración del cliente OAuth, inténtalo de nuevo y me dices.
¡Buenas @Laura Blázquez García ! ¿Has configurado en el servidor FHIR el nombre del cliente de OAuth2 que has definido?
.png)
Sólo podemos agradecer a todos los presentes el interés y la atención que pusieron durante la exposición.
Bueno, a todos menos a @David Reche que solo sabe que interrumpir.
Buenas @Kurro Lopez , parece que no es compatible el modelo que has descargado usando Ollama con lo que requiere la librería sentence transformers, te recomiendo que descargues el modelo directamente como se indica desde la página de hugginfaces:
https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2
from sentence_transformers import SentenceTransformer
sentences = ["This is an example sentence", "Each sentence is converted"]
model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')
embeddings = model.encode(sentences)
print(embeddings)Puedes descargarlo en local directamente así:
if not os.path.isdir('/app/data/model/'):
model = sentence_transformers.SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')
model.save('/app/data/model/')Una vez descargado podrás hacer referencia directamente al modelo descargado.
¡Toda una satisfacción que la ganadora sea española! ¡Enhorabuena @Laura Blázquez García !
¡Anda! Pues ya estaría.
¡Habrá ponche y pasteles!