发布新帖

Pesquisar

公告
· 11 hr 前

New Course Launch: Developing FHIR Applications Using Python

Hi Community!

We’re excited to announce the launch of a new, hands-on training program:

 🧑‍💻 Developing FHIR Applications Using Python 🧑‍💻

This cohort-based course takes developers from FHIR fundamentals to advanced, real-world healthcare interoperability solutions, with deeper, more practical coverage than typical industry offerings and a strong focus on production-ready skills using InterSystems technology.

📅 First cohort starts February 15, 2026
⚠️ Seats are limited - once a cohort fills, registrants will be placed on a waitlist.

Who Should Attend?

This course is ideal for organizations and teams that are:

  • Adopting or expanding FHIR
  • Building SMART on FHIR applications
  • Upskilling development teams with practical, real-world interoperability expertise

Program Structure

The program consists of three progressive 5-week modules. Participants may enroll in individual modules or complete the full 15-week program.

Each week includes:

  • ~3 hours of asynchronous video and guided labs
  • 1 hour of live, instructor-led interactive discussion
  • two lectures and one hands-on lab
  • optional capstone SMART on FHIR application

Module Overview

  • Foundations (5 weeks) - build a solid understanding of core FHIR concepts and hands-on fundamentals, including resources, REST operations, search, validation, and server interaction.
  • Intermediate (5 weeks) - develop secure, scalable FHIR applications in Python, covering SMART on FHIR, bulk data access, implementation guides, and responsible AI integration patterns.
  • Advanced (5 weeks) - design and deploy production-ready FHIR solutions, focusing on architecture patterns, analytics, interoperability strategies, and FHIR as a Service.

Pricing

To encourage early adoption, we’re offering special introductory pricing:

Option

Duration

Price

Foundations

5 weeks

$1,000
$500

Intermediate

5 weeks

$1,000
$500

Advanced

5 weeks

$1,000
$500

Full program bundle

15 weeks

$2,000
$1,000

>> Register Now! << 

Secure your seat for the first cohort starting February 15.

Questions? Contact: fhircourse@intersystems.com

1 条新评论
讨论 (1)2
登录或注册以继续
公告
· 11 hr 前

L'examen InterSystems EHR Reports Specialist est maintenant disponible !

Bonjour à tous,

L'équipe de certification d'InterSystems Learning Services est heureuse d'annoncer la sortie de notre nouvel examen InterSystems EHR Reports Specialist. Vous pouvez dès maintenant l'acheter et vous inscrire dans le catalogue des examens InterSystems. Cet examen évalue la capacité des candidats à utiliser Logi Report Designer avec TrakCare/Intellicare pour concevoir, créer et assurer le support des rapports InterSystems. Pour consulter la liste des sujets abordés, veuillez vous référer à la page dédiée à l'examen. Les candidats qui réussissent recevront un badge de certification numérique qu'ils pourront partager sur les réseaux sociaux comme LinkedIn. Si vous découvrez les certifications InterSystems, nous vous invitons à consulter nos pages dédiées aux examens. Vous y trouverez des informations sur le déroulement des examens, les politiques d'examen, la FAQ et bien plus encore.

Si vous avez des idées pour créer de nouvelles certifications qui pourraient vous aider à faire progresser votre carrière, l'équipe de certification d'InterSystems Learning Services est toujours ouverte aux suggestions. N'hésitez pas à nous contacter à l'adresse certification@intersystems.com si vous souhaitez nous faire part de vos idées.

Nous avons hâte de célébrer votre réussite !

讨论 (0)1
登录或注册以继续
文章
· 17 hr 前 阅读大约需 8 分钟

使用 ChatGPT 从 JSON 响应生成 ObjectScript 类

我有一个新项目,要将 REST 响应中的信息存储到 IRIS 数据库中。我需要同步来自至少二十几个不同 REST 端点的信息,这意味着需要创建将近这么多的 ObjectScript 类来存储来自这些端点的结果。

我能否使用 ChatGPT 来创建这些类?答案是 "可以",这非常好,因为这是我第一次尝试使用生成式人工智能来做一些有用的事情。生成长颈鹿喝汤的图片有点老....。

我是这么做的:

  • 使用 "curl "查询端点,获取一些 JSON REST 调用输出示例。
  • 访问 ChatGPT(InterSystems 为员工提供全公司范围的许可证)
  • 与 ChatGPT 进行以下对话。

我在 "Message ChatGPT "提示符中输入了以下请求:

我:Generate an ObjectScript class that will hold data from the following JSON(生成一个 ObjectScript 类,用于保存以下 JSON 中的数据):

在输入 JSON 之前,我点击了 "Return",因此 ChatGPT 给我的提示如下:

ChatGPT:Please provide the JSON structure you'd like me to generate the ObjectScript class for. If you have an example JSON object, paste it here, and I'll create the corresponding InterSystems ObjectScript class for you(请提供您希望我生成 ObjectScript 类的 JSON 结构。如果您有一个 JSON 对象示例,请将其粘贴到这里,我将为您创建相应的 InterSystems ObjectScript 类)。

我输入了以下内容作为Prompt:

{
  "id": 335818632,
  "appId": 113,
  "appName": "Batch",
  "contentId": 182455380233,
  "subject": "Test Subject",
  "name": "Test email campaign name",
  "counters": {
    "processed": 3910,
    "deferred": 86,
    "unsubscribed": 17,
    "statuschange": 17,
    "bounce": 153,
    "mta_dropped": 8,
    "dropped": 299,
    "delivered": 3749,
    "sent": 3903,
    "click": 16,
    "open": 323
  },
  "lastProcessingFinishedAt": 1733232499000,
  "lastProcessingStartedAt": 1733232303000,
  "lastProcessingStateChangeAt": 1733232499000,
  "numIncluded": 4201,
  "processingState": "DONE",
  "scheduledAt": 1733232300000,
  "type": "BATCH_EMAIL"
}

ChatGPT 的回复:

下面是映射到所提供的 JSON 结构的 InterSystems ObjectScript 类:

Class MyNamespace.MyJSONData Extends (%Persistent, %JSON.Adaptor)
{
Property id As %Integer;
Property appId As %Integer;
Property appName As %String;
Property contentId As %Integer;
Property subject As %String;
Property name As %String;
Property counters As MyNamespace.Counters;
Property lastProcessingFinishedAt As %BigInt;
Property lastProcessingStartedAt As %BigInt;
Property lastProcessingStateChangeAt As %BigInt;
Property numIncluded As %Integer;
Property processingState As %String;
Property scheduledAt As %BigInt;
Property type As %String;
ClassMethod %OnJSONImport(jsonObject As %Object, instance As MyNamespace.MyJSONData) As %Status
{
    Quit ..%JSONImport(jsonObject, .instance)
}
}

Class MyNamespace.Counters Extends (%SerialObject, %JSON.Adaptor)
{
Property processed As %Integer;
Property deferred As %Integer;
Property unsubscribed As %Integer;
Property statuschange As %Integer;
Property bounce As %Integer;
Property mta_dropped As %Integer;
Property dropped As %Integer;
Property delivered As %Integer;
Property sent As %Integer;
Property click As %Integer;
Property open As %Integer;
}

以及解释:

这段代码是一个很好的开始,但我希望它能放入名为 "MyPkg"的软件包中,并将类命名为 "EmaiCampaign"。另外,通过使用一些 NI,我知道生成"%BigInt "属性的值实际上是 Linux 时间,该属性应为 %Library.PosixTime"。

我提出以下请求(不知道为什么要对机器说 "请";我想我父母做得很好):

我:Can we recreate the class again please, renaming the package " MyPkg" and the Class as "EmailCampaign"? Also, please change types of Properties from %BigInt to %Library.PosixTime(我们能否重新创建一个类,将包重命名为 "MyPkg",将类重命名为 "EmailCampaign"?另外,请将属性类型从 %BigInt 改为 %Library.PosixTime).

ChatGPT 的回复:

Here's the updated ObjectScript class with the specified package name and class name, and the timestamp properties updated to use %Library.PosixTime(这是更新后的 ObjectScript 类,指定了软件包名称和类名称,时间戳属性更新为使用 %Library.PosixTime):

Class MyPkg.EmailCampaign Extends (%Persistent, %JSON.Adaptor)
{
Property id As %Integer;
Property appId As %Integer;
Property appName As %String;
Property contentId As %Integer;
Property subject As %String;
Property name As %String;
Property counters As MyPkg.Counters;
Property lastProcessingFinishedAt As %Library.PosixTime;
Property lastProcessingStartedAt As %Library.PosixTime;
Property lastProcessingStateChangeAt As %Library.PosixTime;
Property numIncluded As %Integer;
Property processingState As %String;
Property scheduledAt As %Library.PosixTime;
Property type As %String;
ClassMethod %OnJSONImport(jsonObject As %Object, instance As MyPkg.EmailCampaign) As %Status
{
    Quit ..%JSONImport(jsonObject, .instance)
}
}

Class MyPkg.Counters Extends (%SerialObject, %JSON.Adaptor)
{
Property processed As %Integer;
Property deferred As %Integer;
Property unsubscribed As %Integer;
Property statuschange As %Integer;
Property bounce As %Integer;
Property mta_dropped As %Integer;
Property dropped As %Integer;
Property delivered As %Integer;
Property sent As %Integer;
Property click As %Integer;
Property open As %Integer;
}

以及以下解释:

将代码 "原样 "复制到 VSCode 后,大括号的语法问题凸显出来。ObjectScript 类无法启用内部类定义。

要求 ChatGPT 将 MyPkg.Counters 内部类作为一个单独的类来解决 "大括号 "问题是 "不可行的";人类需要将该类移到另一个文件中。ChatGPT 在收到以下请求后确实重新命名了该类:

我:The class as it is written does not compile. Can we move the internal class named MyPkg.Counters out of the main class into its own class and rename it to MyPkg.CampaignCounters?(现在编写的类无法编译。我们能否将名为 MyPkg.Counters 的内部类从主类移到自己的类中,并将其重命名为 MyPkg.CampaignCounters?)

ChatGPT 的回复:

 

Here's the updated ObjectScript code with the MyPkg.CampaignCounters class moved out as its own class(以下是更新后的 ObjectScript 代码,其中 MyPkg.CampaignCounters 类被移出作为自己的类)

Class MyPkg.EmailCampaign Extends (%Persistent, %JSON.Adaptor)
{
Property id As %Integer;
Property appId As %Integer;
Property appName As %String;
Property contentId As %Integer;
Property subject As %String;
Property name As %String;
Property counters As MyPkg.CampaignCounters;
Property lastProcessingFinishedAt As %Library.PosixTime;
Property lastProcessingStartedAt As %Library.PosixTime;
Property lastProcessingStateChangeAt As %Library.PosixTime;
Property numIncluded As %Integer;
Property processingState As %String;
Property scheduledAt As %Library.PosixTime;
Property type As %String;
ClassMethod %OnJSONImport(jsonObject As %Object, instance As MyPkg.EmailCampaign) As %Status
{
    Quit ..%JSONImport(jsonObject, .instance)
}
}

Class MyPkg.CampaignCounters Extends (%SerialObject, %JSON.Adaptor)
{
Property processed As %Integer;
Property deferred As %Integer;
Property unsubscribed As %Integer;
Property statuschange As %Integer;
Property bounce As %Integer;
Property mta_dropped As %Integer;
Property dropped As %Integer;
Property delivered As %Integer;
Property sent As %Integer;
Property click As %Integer;
Property open As %Integer;
}

将上述代码粘贴到 VSCode 并编译后,编译器报告说 ObjectScript 中不存在名为"%Object "的类型。根据 IRIS 文档,%JSON.Adaptor 的%JSONImport()方法的第一个参数的属性是灵活的:

"输入参数可以是作为字符串或流的 JSON,也可以是 %DynamicAbstractObject 的子类。

删除第一个类中 %OnJSONImport() 第一个参数的 "As %Object "属性并将两个类分离到不同的文件后,MyPkg.EmailCampaign 类编译成功。但是,MyPkg.CampaignCounters 无法编译;ChatGPT 还不知道下划线是 ObjectScript 中的特殊字符(字符串连接操作符)。

让我们试着教教它。

我:The underscore character "_" is a special character in ObjectScript. Please change properties with an underscore in their names to camel case names and remove the underscore(下划线字符"_"在 ObjectScript 中是一个特殊字符。请将名称中带有下划线的属性改为驼峰式名称,并去掉下划线)。

ChatGPT 的回复

Here is the updated code with properties that had underscores in their names converted to camel case(以下是更新后的代码,将名称中含有下划线的属性转换为驼峰大小写)

Class MyPkg.EmailCampaign Extends (%Persistent, %JSON.Adaptor)
{
Property id As %Integer;
Property appId As %Integer;
Property appName As %String;
Property contentId As %Integer;
Property subject As %String;
Property name As %String;
Property counters As MyPkg.CampaignCounters;
Property lastProcessingFinishedAt As %Library.PosixTime;
Property lastProcessingStartedAt As %Library.PosixTime;
Property lastProcessingStateChangeAt As %Library.PosixTime;
Property numIncluded As %Integer;
Property processingState As %String;
Property scheduledAt As %Library.PosixTime;
Property type As %String;
ClassMethod %OnJSONImport(jsonObject As %Object, instance As MyPkg.EmailCampaign) As %Status
{
    Quit ..%JSONImport(jsonObject, .instance)
}
}

Class MyPkg.CampaignCounters Extends (%SerialObject, %JSON.Adaptor)
{
Property processed As %Integer;
Property deferred As %Integer;
Property unsubscribed As %Integer;
Property statusChange As %Integer;
Property bounce As %Integer;
Property mtaDropped As %Integer;
Property dropped As %Integer;
Property delivered As %Integer;
Property sent As %Integer;
Property click As %Integer;
Property open As %Integer;
}

以及以下解释:

ChatGPT 不遗余力地将另一个以两个独立单词命名的属性也改成了驼峰字体(statuschange);我保留了这一改动,因为主类中其他类似名称的属性都是驼峰字体。

最新生成的代码分为两个独立文件(并删除了 %OnJSONImport() 方法定义中的 "As %Object "定义),所有代码都能成功编译。

这些生成的类是我所需的一个很好的起点,我将在这个项目的其他 REST 数据源中重复这个过程,这样就可以省去很多不必要的键入。

讨论 (0)1
登录或注册以继续
InterSystems 官方
· 21 hr 前

インターシステムズ製品 2025.1.3 リリースのご案内

インターシステムズは、InterSystems IRIS® data platformInterSystems IRIS® for HealthTMHealthShare® Health Connect のメインテナンスバージョン 2025.1.3 をリリースしました。このリリースには、最近発行された以下の警告および勧告に対する修正が含まれております。

ドキュメント

変更点の詳細と、アップグレードチェックリストは以下のリンクからご覧いただけます。(すべて英語)

早期アクセスプログラム(EAPs)について

現在、多くの早期アクセスプログラムをご提供しております。 こちらの ページ ご興味のあるプログラムにお申込みいただけます。

キットの入手方法

InterSystems IRIS と InterSystems IRIS for Health の通常インストーラパッケージ形式のキットは WRC Direct の IRIS ダウンロードページ から、HealthShare Health Connect のキットは HealthShare ダウンロードページ からそれぞれ入手してください。コンテナイメージは InterSystems Container Registry から入手できます。

利用可能なパッケージ情報

本製品は、従来からのインストーラパッケージ形式と、コンテナイメージ形式をご用意しています。その一覧は、 サポートプラットフォームページ(英語, 2025.1) をご覧ください。本メンテナンスリリースのバージョン番号は、2025.1.3.481.1 です。

讨论 (0)1
登录或注册以继续
文章
· 二月 12 阅读大约需 2 分钟

O mesmo terminal de sempre, mas na web

Já tínhamos o Webterminal há algum tempo, mas ele era limitado e nem todos os recursos funcionavam. Não havia suporte a shell nem aos recursos mais recentes, como suporte a Python embutido. Havia também alguns problemas com ferramentas que exigem o modo programador. A autenticação básica não era tão prática quanto uma página de login simples, onde você poderia ter a opção de adicionar sua própria página de login, caso quisesse alterar a forma de acesso à aplicação, como usando SSO.

Com o terminal IRIS original, incorporado em um formulário web, utilizando o xterm.js — muito usado no mundo web e em ferramentas como o VSCode — e um pouco de magia do Python, que ajuda na comunicação entre processos via tty, conseguimos levar o terminal para a web em sua capacidade total.

iTerm

Para testar como ele funciona na web, adicionei a rotina term, que gera alguma formatação.

iTerm

 

Ideias para o futuro

  • Sugestões e realce de sintaxe. Você deve se lembrar de um dos meus projetos anteriores, o irissqlcli, que fornecia intellisense e realce de sintaxe em um terminal especificamente para acesso SQL. Minha ideia é adicionar o mesmo nível de suporte a um terminal ObjectScript. E isso já faz parte deste projeto, como uma ferramenta chamada iterm, embora ainda não esteja finalizada, pois é bastante complicado determinar o momento em que o terminal executa algo e aguarda algum comando.
  • Pequena aparência de VSCode com terminal

Outro projeto é o irislab, que pode injetar novos itens nele.

Por favor, vote no contest atual se você gostar deste projeto.

讨论 (0)1
登录或注册以继续