Find

Article
· Nov 11 5m read

终于等到你:欢迎了解InterSystems IRIS对Golang的支持

导言

InterSystems IRIS 数据平台一直以其性能、互操作性和跨编程语言的灵活性而著称。多年来,开发人员可以将 IRIS 与 Python、Java、JavaScript 和 .NET 结合使用,但 Go(或Golang)开发人员却只能望洋兴叹。

Golang Logo

这种等待终于结束了。

新的go-irisnative驱动程序为 InterSystems IRIS 带来了GoLang 支持,实现了标准的 database/sql API。这意味着 Go 开发人员现在可以使用熟悉的数据库工具、连接池和查询接口来构建由 IRIS 支持的应用程序。


为什么要支持 GoLang

GoLang 是一种专为简单性、并发性和性能而设计的语言,是云原生和基于微服务架构的理想选择。它为 Kubernetes、Docker 和 Terraform 等一些世界上最具可扩展性的系统提供了支持。

将 IRIS 引入 Go 生态系统可实现以下目标

  • 使用 IRIS 作为后台的轻量级高性能服务
  • 并行查询执行或后台处理的本机并发性
  • 与容器化和分布式系统无缝集成
  • 通过 Go 的 database/sql 界面进行自动化数据库访问

这种集成使 IRIS 成为现代云就绪 Go 应用程序的完美选择。


开始使用

1.安装

go get github.com/caretdev/go-irisnative

2.连接 IRIS

下面介绍如何使用标准的 database/sql API 进行连接:

import (
    "database/sql"
    "fmt"
    "log"
    _ "github.com/caretdev/go-irisnative"
)

func main() {
    db, err := sql.Open("iris", "iris://_SYSTEM:SYS@localhost:1972/USER")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    // Simple ping to test connection
    if err := db.Ping(); err != nil {
        log.Fatal("Failed to connect:", err)
    }

    fmt.Println("Connected to InterSystems IRIS!")
}

3.创建表格

让我们创建一个简单的演示表:

_, err = db.Exec(`CREATE TABLE IF NOT EXISTS demo (
    id INT PRIMARY KEY,
    name VARCHAR(50)
)`)
if err != nil {
    log.Fatal(err)
}
fmt.Println("Table created.")

4.插入数据

目前不支持多行插入- 每次调用只插入一行:

_, err = db.Exec(`INSERT INTO demo (id, name) VALUES (?, ?)`, 1, "Alice")
if err != nil {
    log.Fatal(err)
}

_, err = db.Exec(`INSERT INTO demo (id, name) VALUES (?, ?)`, 2, "Bob")
if err != nil {
    log.Fatal(err)
}

fmt.Println("Data inserted.")

5.查询数据

使用 database/sql 界面可直接进行查询:

rows, err := db.Query(`SELECT id, name FROM demo`)
if err != nil {
    log.Fatal(err)
}
defer rows.Close()

for rows.Next() {
    var id int
    var name string
    if err := rows.Scan(&id, &name); err != nil {
        log.Fatal(err)
    }
    fmt.Printf("ID: %d, Name: %s\n", id, name)
}

这就是在 Go 中执行基本 SQL 操作所需的全部内容。


如何运行

在引擎盖下,go-irisnative驱动程序使用IRIS Native API与数据库进行高效的底层通信。该驱动程序实现了 Go 的标准 database/sql/driver 接口,因此可与现有的 Go 工具兼容,例如:IRIS Native API、IRIS Native API、IRIS Native API、IRIS Native API、IRIS Native API:

  • sqlx
  • gorm (使用自定义方言)
  • 标准 Go 移植工具

这为开发人员提供了一个熟悉的 API,具有本地 IRIS 访问的功能和性能。


使用实例

  • 微服务:轻量级Go服务直接连接到IRIS。
  • 数据API:通过REST或gRPC端点暴露IRIS数据。
  • 集成工具:在Go管道中桥接IRIS数据与其他系统。
  • 云原生IRIS应用:在Kubernetes或Docker上部署基于IRIS的Go应用。

使用测试容器进行测试

如果您想运行自动化测试而无需管理实时IRIS实例,可以使用testcontainers-iris-go
它会启动一个临时 IRIS 容器进行集成测试。

测试设置示例:

import (
    "context"
    "database/sql"
    "flag"
    "log"
    "os"
    "testing"
    iriscontainer "github.com/caretdev/testcontainers-iris-go"
    "github.com/stretchr/testify/require"
    "github.com/testcontainers/testcontainers-go"
)

var connectionString string = "iris://_SYSTEM:SYS@localhost:1972/USER"
var container *iriscontainer.IRISContainer = nil
func TestMain(m *testing.M) {
    var (
        useContainer   bool
        containerImage string
    )
    flag.BoolVar(&useContainer, "container", true, "Use container image.")
    flag.StringVar(&containerImage, "container-image", "", "Container image.")
    flag.Parse()
    var err error
    ctx := context.Background()
    if useContainer || containerImage != "" {
        options := []testcontainers.ContainerCustomizer{
            iriscontainer.WithNamespace("TEST"),
            iriscontainer.WithUsername("testuser"),
            iriscontainer.WithPassword("testpassword"),
        }
        if containerImage != "" {
            container, err = iriscontainer.Run(ctx, containerImage, options...)
        } else {
            // or use default docker image
            container, err = iriscontainer.RunContainer(ctx, options...)
        }
        if err != nil {
            log.Println("Failed to start container:", err)
            os.Exit(1)
        }
        defer container.Terminate(ctx)
        connectionString = container.MustConnectionString(ctx)
        log.Println("Container started successfully", connectionString)
    }

    var exitCode int = 0
    exitCode = m.Run()

    if container != nil {
        container.Terminate(ctx)
    }
    os.Exit(exitCode)
}

func openDbWrapper[T require.TestingT](t T, dsn string) *sql.DB {
    db, err := sql.Open(`intersystems`, dsn)
    require.NoError(t, err)
    require.NoError(t, db.Ping())
    return db
}

func closeDbWrapper[T require.TestingT](t T, db *sql.DB) {
    if db == nil {
        return
    }
    require.NoError(t, db.Close())
}

func TestConnect(t *testing.T) {
    db := openDbWrapper(t, connectionString)
    defer closeDbWrapper(t, db)

    var (
        namespace string
        username  string
    )
    res := db.QueryRow(`SELECT $namespace, $username`)
    require.NoError(t, res.Scan(&namespace, &username))
    require.Equal(t, "TEST", namespace)
    require.Equal(t, "testuser", username)
}

这是CI/CD 管道单元测试的理想选择,可确保 Go 应用程序与 IRIS 在隔离状态下无缝运行。


结论

InterSystems IRIS对Go语言的支持现已到来,这无疑是一个变革性的进步。
通过go-irisnative您现在可以直接利用 IRIS 的强大功能构建可扩展、并发和云原生的应用程序。

无论您是要构建微服务、API 还是集成工具,Go 都能为您提供简单性和性能,而 IRIS 则能为您提供可靠性和丰富的数据功能。

👉 来试一试吧!

Discussion (0)1
Log in or sign up to continue
Article
· Nov 11 3m read

GORM 与 InterSystems IRIS 的相遇:介绍一下 gorm-iris

如果你觉得 IRIS 对 Go 的原生支持令人兴奋,那就等着看 GORM 加入后会发生什么吧。


就在最近,随着go-irisnative 的发布,我们迎来了 InterSystems IRIS 的本地 GoLang 支持这仅仅是个开始。现在,我们又推出了gorm-iris ——一个 GORM 驱动程序,旨在为您的 IRIS + Go 堆栈带来对象关系映射 (ORM) 的强大功能。

为什么选择 GORM?

GORM 是 Go 生态系统中最流行的 ORM 库之一。它使使用 Go 结构而不是编写原始 SQL 与数据库交互变得简单。通过自动迁移、关联和查询构建等功能,GORM 极大地简化了后端开发。

因此,在实现 Go 与 IRIS 的本地对话后,下一步自然是让 GORM 与 IRIS 无缝协作。这正是 gorm-iris 所要做的。


什么是 gorm-iris

gorm-iris 是在 go-irisnative 基础上为 InterSystems IRIS 定制的 GORM 驱动程序。它就像一座桥梁,支持开发人员使用熟悉的 GORM 语法和模式与 IRIS 数据库交互,而幕后的所有繁重工作都通过本地 IRIS 调用来处理。

可以将其视为两个世界中的最佳选择:

  • 通过 go-irisnative 实现本地性能和数据访问
  • 通过 GORM 实现开发人员友好的 ORM 功能

主要功能

以下是 gorm-iris 提供的功能:

✅ GORM 和 IRIS 之间的无缝集成
✅ 使用本地 Go 结构为 IRIS 数据建模
✅ 开箱即用的基本 CRUD 操作
✅ 通过 Go 界面自定义行为

当然,这一切都是开源的。


快速入门示例

想开始使用吗?这里有一个最基本的设置来演示如何工作:

package main

import (
	"fmt"
	iris "github.com/caretdev/gorm-iris"
	"gorm.io/gorm"
)

type User struct {
  ID    int
  Name  string
  Email string
}

func main() {
  dsn := "iris://_SYSTEM:SYS@localhost:1972/USER"
  db, err := gorm.Open(iris.Open(dsn), &gorm.Config{})
  if err != nil {
    panic("failed to connect to IRIS")
  }

	// Auto-migrate schema
  db.AutoMigrate(&User{})

  // Create
  db.Create(&[]User{
		{Name: "Johh", Email: "john@example.com"},
		{Name: "Johh1", Email: "john1@example.com"},
		{Name: "John2", Email: "john2@example.com"},
	})

  // Read
  var user User
  db.First(&user, "email = ?", "john1@example.com")
	fmt.Printf("Found: ID: %d; Name: %s\n", user.ID, user.Name)
}

没错,就是这样。


引擎盖下有什么?

gorm-iris 驱动程序通过 go-irisnative 将 GORM 操作转换为本地调用。这意味着你仍然可以获得直接访问 IRIS 的速度和效率,但对于日常用例来说,这只是一个更高层次的抽象。

它非常适合以下开发人员:

  • 希望使用 IRIS 作为后台构建 Go 应用程序
  • 偏好 ORM 式开发而非直接查询构建
  • 希望使用简洁、可读的 Go 代码构建原型或全面的应用程序

发展方向

这只是 0.1.1 版——我们正在积极改进功能覆盖范围、性能调优和处理更复杂的 GORM 功能。

如果您正在使用 GORM,并有反馈意见或功能需求,欢迎提出问题和建议!

👉 查看软件源: https://github.com/caretdev/gorm-iris


最终想法

通过 go-irisnative,我们为 GoLang 开发人员打开了与 InterSystems IRIS 对话的大门。通过 gorm-iris,我们邀请他们留下来共进晚餐。

这个库就是要让 IRIS 在您的 Go 开发工作流中有家的感觉。它简洁、富有表现力,并充分利用了 Go 开发人员已经喜爱的工具。

所以,来吧!试试它,构建一些很酷的东西,并让我们知道你的想法。

Discussion (0)1
Log in or sign up to continue
Article
· Nov 11 31m read

将一切结合在一起:Go、GORM 和 InterSystems IRIS 的实际应用

对于使用 InterSystems IRIS 的 Go 开发人员来说,我们已经达到了两个重要的里程碑:

现在是时候看看一切如何协同工作了。

为了演示 Go 开发人员可以如何轻松地采用 InterSystems IRIS,我使用了一个现有的生产级开源项目——RealWorld 示例应用程序——它展示了使用Go FiberGORMSQLite 实现的 Medium.com 式全栈克隆。

RealWorld Example App

只需稍作配置调整,我就将 SQLite 换成了gorm-iris,其他一切保持不变。结果如何?
一个由 InterSystems IRIS 支持的功能齐全的 Go + Fiber 应用程序——不需要重写代码,不需要 ORM 体操,只需要一个不同的数据库后端。

您可以在这里找到完整的工作演示:github.com/caretdev/golang-fiber-iris-realworld-example-app

开始使用

让我们运行演示项目。


1.克隆项目

git clone git@github.com:caretdev/golang-fiber-iris-realworld-example-app.git 
cd golang-fiber-iris-realworld-example-app

2.下载依赖项并生成 Swagger 文档

安装 Go 依赖项并生成 API 文档:

go mod download 
go install github.com/swaggo/swag/cmd/swag@latest 
go generate .

这将

  • 下载所有需要的 Go 模块。
  • 安装用于生成 Swagger 文档的 swag 工具。
  • 执行 Go generate 命令,根据代码库中的注释重建 Swagger 定义。

运行该命令后,您将在 docs/ 目录下看到生成的文档文件。

3.数据库设置和测试

该项目包含一个 db.go 文件,其中定义了初始化数据库连接的逻辑。
为了简化测试并确保环境整洁,我们使用了testcontainers-iris-go——它会为每次测试运行启动一个全新的 InterSystems IRIS 容器

这意味着每次测试都从一个空的、隔离的 IRIS 实例开始,是可靠的自动测试的理想选择。

以下是实现该功能的核心代码部分:

var container *iriscontainer.IRISContainer

func TestDB(useContainer bool) *gorm.DB {
	var err error
	var connectionString = "iris://_SYSTEM:SYS@localhost:1972/USER"
	if useContainer {
		options := []testcontainers.ContainerCustomizer{
			iriscontainer.WithNamespace("TEST"),
			iriscontainer.WithUsername("testuser"),
			iriscontainer.WithPassword("testpassword"),
		}
		ctx := context.Background()
		container, err = iriscontainer.RunContainer(ctx, options...)
		if err != nil {
			log.Println("Failed to start container:", err)
			os.Exit(1)
		}
		connectionString = container.MustConnectionString(ctx)
		fmt.Println("Container started: ", connectionString)
	}

	newLogger := logger.New(
		log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer
		logger.Config{
			SlowThreshold: time.Second,  // Slow SQL threshold
			LogLevel:      logger.Error, // Log level
			Colorful:      true,         // Disable color
		},
	)

	db, err := gorm.Open(iris.New(iris.Config{
		DSN: connectionString,
	}), &gorm.Config{
		Logger: newLogger,
	})
	if !useContainer {
		_ = db.Exec("DROP DATABASE TEST").Error
		_ = db.Exec("CREATE DATABASE TEST").Error
		_ = db.Exec("USE DATABASE TEST").Error
	}

	if err != nil {
		fmt.Println("storage err: ", err)
	}
	return db
}

func DropTestDB() error {
	if container != nil {
		container.Terminate(context.Background())
	}
	container = nil
	return nil
}

func AutoMigrate(db *gorm.DB) {
	db.AutoMigrate(
		&model.User{},
		&model.Follow{},
		&model.Article{},
		&model.Comment{},
		&model.Tag{},
	)
}

使用容器化 IRIS 在 cli 标志下设置,并在 handler_test.go 文件中设置

var (
	useContainer bool
)

func TestMain(m *testing.M) {
	flag.BoolVar(&useContainer, "container", true, "Use container image.")
	flag.Parse()
	// setup()
	code := m.Run()
	// tearDown()
	os.Exit(code)
}

func setup() {
	d = db.TestDB(useContainer)
	db.AutoMigrate(d)
	us = store.NewUserStore(d)
	as = store.NewArticleStore(d)
	h = NewHandler(us, as)
	e = router.New()
	loadFixtures()
}

工作原理

  • useContainertrue 时,函数会通过 testcontainers-iris-go 启动一个新的 IRIS 容器。
    • 它将创建一个带有自定义凭据(testuser / testpassword)和名为 TEST 的命名空间的干净环境。
    • 连接字符串通过 container.MustConnectionString(ctx) 自动获取。
  • 在本地运行而不使用容器时,代码会连接到预先存在的 IRIS 实例,并确保在测试运行前重新创建 TEST 数据库。
  • AutoMigrate()会使用项目中定义的模型(UserArticleComment 等)自动创建所有需要的表。

4.运行测试

数据库配置就绪后,就可以使用以下工具执行所有测试:

go test ./handler -v

可以添加 -container 或 -container=0 标志来改变测试方式

此命令将

  • 以冗长模式编译并运行所有 Go 测试。
  • 为每个测试启动一个新的 IRIS 容器(如果启用)。
  • 自动应用迁移并在完成后进行清理。

如果一切配置正确,你会看到类似以下的日志输出:

 
测试结果

5.使用 Docker Compose 运行应用程序

确认测试成功通过后,下一步就是使用 Docker运行完整的 Fiber + GORM + IRIS 应用程序
在此设置中,Go 后端被构建成二进制文件,复制到 IRIS 容器中,并与 IRIS 本身一起自动启动。

这种方法使部署变得极其简单——只需一条命令就能启动一切。


已更新 docker-compose.yml

该项目的修改版 docker-compose.yml 现在定义了一个iris 服务,可同时处理这两种情况:

  • 运行InterSystems IRIS数据库。
  • 作为同一容器的一部分启动Go Fiber 应用程序

关键在于

  • Go 应用程序使用多级 Docker 构建。
  • 生成的二进制文件被复制到 IRIS 映像中。
  • 其中包含一个小的init 脚本,用于在 IRIS 启动时自动启动 Go 应用程序。

这样,你就有了一个自足的容器——一个能同时运行IRISGo Web API的单一镜像,两者完全同步。


构建并启动应用程序

要构建 IRIS 映像并启动环境,只需运行

docker compose up -d iris --build

这将

  1. 构建 Go 应用程序。
  2. 创建一个新的基于 IRIS 的 Docker 映像,其中包含应用程序二进制文件和初始化脚本。
  3. 以分离模式 (-d) 启动容器,同时运行 IRIS 和 Go API。

💡注意:
Go的一个美妙之处在于,您不必局限于将应用程序嵌入 IRIS 容器。
得益于 Go 的单二进制编译,您可以轻松地为您的应用程序构建一个独立的 Docker 镜像,该镜像可以使用相同的连接字符串通过网络连接到 InterSystems IRIS。

这种方法有两大优势:

  • 生成的映像更小,通常不到 30 MB。
  • 它将应用逻辑数据库基础架构干净利落地分离开来,是微服务或云部署的理想选择。

在生产过程中,你可以将 IRIS 和 Go 服务放在不同的容器(甚至不同的主机)中,通过网络安全地连接起来--将 IRIS 的可靠性和 Go 的可移植性结合起来。

6.使用 Newman 进行端到端 API 测试

Go + IRIS 应用程序启动并运行后,就需要验证 REST API 是否完全按照预期运行。
该项目包括一层额外的集成测试——使用原始 RealWorld 项目中的Postman / Newman集合

这将确保后端完全符合 RealWorld API 规范,并确保所有端点在 InterSystems IRIS 支持下正常工作。


Newman即服务

为了实现无缝测试,docker-compose.yml 文件定义了一个名为newman-checker 的额外服务。
该服务在容器内运行Newman CLI,执行完整的 RealWorld API 测试集,并在内部连接到运行中的 Fiber + IRIS 应用程序。

由于这两个服务都在同一个 Docker 网络中运行,因此测试可以直接访问后端,无需任何额外配置。


运行 API 测试

要执行端到端测试,只需运行

docker compose run newman-checker

这将

  1. 启动Newman容器。
  2. 将其连接到运行中的 iris 服务。
  3. 针对 Go + IRIS 后端执行整个 RealWorld API 测试套件。

如果一切设置正确,你应该会看到如下摘要:

 
Newman测试结果

这证实了什么

通过 Newman 套件意味着您的 Go + Fiber + GORM + IRIS 协议栈与 RealWorld API 规范完全兼容--这是一个很好的指标,表明您的后端逻辑、ORM 集成和数据库连接都能按预期运行。
这是一个很好的指标,表明您的后端逻辑、ORM 集成和数据库连接都能按预期运行。

这不再只是一个演示,而是一个由InterSystems IRIS 支持的符合规范的生产级后端

7.使用 Swagger UI 探索应用程序接口

一切就绪并开始运行后,你终于可以通过一个简洁的交互式界面来探索实时 REST API 了。
该项目附带了一个预生成的 Swagger UI,可以直接在浏览器中轻松检查和测试端点。

启动应用程序后,打开

👉 http://localhost:8585/swagger/index.html

您将看到完整的 RealWorld API 规范 - 所有端点均由Go Fiber后端提供支持,并通过GORMInterSystems IRIS 相连。

从这里,您可以

  • 注册和登录用户
  • 创建、编辑和删除文章
  • 发表评论
  • 关注或取消关注用户

通过新的 Go 驱动程序和 ORM 集成,IRIS 可实时处理您发送的所有请求。

下一步计划

您现在已经构建并运行了一个完整的Go + Fiber + GORM + IRIS后端--包括自动化测试、Swagger 文档和容器化部署。
自动化测试、Swagger 文档和容器化部署。

从这里,您可以

  • 用自己的功能扩展应用程序。
  • 将 IRIS 和 Go 应用程序作为单独的服务部署,以提高可扩展性。
  • 尝试使用高级 IRIS 功能--全局、分析和互操作性。

该演示表明,InterSystems IRIS可以成为现代 Go 生态系统中的一等公民--功能强大、速度快,并可用于云计算。
功能强大、速度快,可用于云原生应用程序。


该项目正在参与竞赛,请在此投票。

Discussion (0)1
Log in or sign up to continue
Article
· Nov 11 7m read

OMOP探索之旅——基于GCP医疗API的实时FHIR®到OMOP数据转换(RealTymus)

实时 FHIR® 到 OMOP 转换

OMOP 之旅的这一部分,我们在尝试挑战Scylla 之前先反思一下,InterSystems OMOP 转换是建立在批量 FHIR 导出作为源有效载荷的基础上的,我们是多么幸运。 这开启了 InterSystems OMOP 转换与多个 FHIR® 供应商的放手互操作性,这次是与谷歌云医疗 API 的 互操作性

谷歌云医疗 API FHIR® (Google Cloud Healthcare API FHIR®)导出

GCP FHIR® 数据库支持通过命令行界面(CLI)或应用程序编程接口(API)进行FHIR数据的批量导入/导出,其前提条件很简单,且相关文档极为详尽,因此我们就不让模型再针对这方面进行赘述训练了,如有兴趣,我们会附上相关链接。 本段标题中更有价值的是bulk FHIR export (批量FHIR导出)标准本身的实现。

谷歌实施 FHIR® 导出的重要区别在于:通过 Pub/Sub 发送资源变更通知,以及指定增量导出的能力。

实时?

是的!我想我会死在这把剑上的。 这不仅是我的说唱手柄,而且其机制绝对可以支持一个很好的技术论证,可以说...

"当一个新的组织被创建到 FHIR 时,我们会对其进行转换,并将其添加到 InterSystems OMOP CDM 中,与 Care_site/location 一样"。

演练

本文试图简明扼要地概括发布/子通知如何与云功能相结合,将这两种解决方案粘合在一起,并在细粒度级别上实现 OMOP 的自动摄取。

第一步:将 InterSystems OMOP 与 AWS Bucket 连接起来

这个步骤在本社区的帖子中越来越多地重复出现,因此我将以最快的速度介绍这些步骤。

  • 购买 AWS S3 存储桶
  • 启动 InterSystems OMOP,添加桶配置
  • 从 InterSystems OMOP 部署中弹出策略
  • 将策略应用到 AWS S3 存储桶

 

我不知道,这些步骤和图像在我的脑海中似乎更好用,但也许不是。 这里有文档,这里有一个更深入的方法,可以在本系列中用更好的示例来解决这个问题。

第二步:在谷歌云医疗 API 中添加发布/订阅(Pub/Sub)目标

如前所述,实现这一功能的基础是数据存储中的资源变更通知这一超级强大的功能。 您可以在对话框中的设置中找到此选项,也可以在配置后使用。 我通常喜欢选中这两个选项,以便在通知中提供尽可能多的数据。 例如,在删除时,您可以在通知中包含已删除的资源,这对于 EMPI 解决方案来说非常重要。

第三步:云功能 ⭐

云功能需要投入工作,其 SOW 看起来有点像这样。

在创建方法上监听组织类型的 FHIR 资源更改发布/子通知,并从事件触发时起增量导出数据存储。 由于导出功能仅支持 GCS 目标,因此读入创建的导出并创建 fhir 导出压缩文件,将 ndjson 文件压缩到压缩文件根目录,然后将创建的压缩文件推送到 aws bucket。

再次说明第二个让它特别出色的功能,那就是从特定日期和时间导出的功能,这意味着我们不需要导出整个数据集。 为此,我们将使用收到事件的时间,再加上一分钟左右,希望导出、导入和转换的步骤更少,当然也更及时。

 
realtimefhir2omop.py

第四步:现在正在发生什么?

为了分清发生了什么,让我们通过每一点的截图来检查实时处理情况。

创建 FHIR Organization

发布/订阅(Pub/Sub)事件已发布

 
发布/订阅 FHIR 事件

云功能从订阅中接收资源事件

云功能导出 FHIR 存储 GCS

云功能从 GCS 创建 ZIP 并推送至 AWS

InterSystems OMOP 将 FHIR 转换为 OMOP

组织可在 CDM 中作为护理站点使用

FHIR 资源是何时转换到 CDM 的?

YARN | Now. You're looking at now. Everything that happens now is happening  now. | Spaceballs (1987) | Video gifs by quotes | 1606b976 | 紗

第四步:验证乐趣

OBS 的趣味性和音频的不确定性(注意:视频来源YouTube,请移步至原帖查看)

总结

去年在MIT Grand Hack 上也做过类似的事情,使用的是相同的设计模式,但中间使用了 Questionairre/Response 资源和 Gemini。

Gemini FHIR Agent MIT Grand Hack

Discussion (0)1
Log in or sign up to continue
InterSystems Official
· Nov 11

Notas de la versión: Servicios en la nube de InterSystems – Versión 25.22.2

Resumen

Esta versión introduce el FHIR Server 2025.10.0, que ofrece las últimas mejoras en cumplimiento de estándares y rendimiento. También mejora el proceso de actualización de Health Connect Cloud (HCC) para una mayor fiabilidad y añade nueva flexibilidad a Network Connect mediante la compatibilidad con listas de prefijos en las configuraciones de VPN.


Nuevas características y mejoras

Categoría

Característica / Mejora

Detalles

FHIR Server

Lanzamiento de FHIR Server 2025.10.0

Introduce la última versión del FHIR Server de InterSystems, con mayor escalabilidad, mejor cumplimiento con FHIR R5 y optimizaciones para el intercambio masivo de datos.

Health Connect Cloud

Mejoras en el proceso de actualización

Flujo de actualización optimizado y reforzado para implementaciones de HCC, reduciendo la duración de las ventanas de mantenimiento y mejorando la seguridad en las reversiones y la precisión de la automatización.

Network Connect

Importación de VPN estática con soporte para listas de prefijos

La tarea de importación de VPN estática ahora admite listas de prefijos de AWS, lo que simplifica la gestión de rutas y permite configuraciones de red más dinámicas y coherentes en los entornos de los clientes.


Acciones recomendadas.

 

No hay acciones recomendadas para esta actualización. 


Soporte

Para obtener asistencia o conocer más sobre estas actualizaciones, abrid un caso de soporte a través de iService o del Portal de Servicios en la Nube de InterSystems.

©2025 InterSystems Corporation. Todos los derechos reservados.

Discussion (0)1
Log in or sign up to continue