본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

FHIR

원문 보기 위키 갱신

FHIR 컴포넌트는 FHIR(Fast Healthcare Interoperability Resources) 사양의 자바 오픈소스 구현체인 HAPI-FHIR 라이브러리와 통합해요. FHIR 서버의 리소스를 생성·조회·검색·수정하는 작업을 Camel 라우트에서 바로 수행할 수 있고, 인코딩·FHIR 버전·프록시·인증 같은 옵션도 제공해요.

출처: 문서

본문

Camel 2.23부터 지원

컨슈머와 프로듀서를 모두 지원해요

FHIR 컴포넌트는 FHIR(Fast Healthcare Interoperability Resources) 사양의 자바 오픈소스 구현체인 HAPI-FHIR 라이브러리와 통합해요.

Maven 사용자라면 이 컴포넌트를 위해 pom.xml에 다음 의존성을 추가해야 해요:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-fhir</artifactId>
    <version>${camel-version}</version>
</dependency>

URI 형식 (URI Format)

FHIR 컴포넌트는 다음 URI 형식을 사용해요:

fhir://endpoint-prefix/endpoint?[options]

엔드포인트 프리픽스는 다음 중 하나를 쓸 수 있어요:

  • capabilities

  • create

  • delete

  • history

  • load-page

  • meta

  • operation

  • patch

  • read

  • search

  • transaction

  • update

  • validate

옵션 설정 (Configuring Options)

Camel 컴포넌트는 서로 다른 두 단계로 설정해요:

  • component level

  • endpoint level

컴포넌트 옵션 설정 (Configuring Component Options)

컴포넌트 레벨에서는 엔드포인트들이 이어서 물려받는 일반적이고 공유되는 설정을 해요. 가장 상위의 설정 레벨이죠.

예를 들어 컴포넌트에는 보안 설정, 인증용 자격 증명, 네트워크 연결 URL 같은 것들이 있을 수 있어요.

컴포넌트에 따라 옵션이 몇 개뿐인 것도 있고 아주 많은 것도 있어요. 컴포넌트는 보통 널리 쓰이는 기본값이 미리 설정되어 있어서, 몇 가지 옵션만 설정하거나 아예 하나도 건드리지 않아도 되는 경우가 많아요.

컴포넌트는 다음 방법으로 설정할 수 있어요:

  • Component DSL을 사용해요.

  • 설정 파일(application.properties, *.yaml 파일 등).

  • Java 코드에서 직접.

엔드포인트 옵션 설정 (Configuring Endpoint Options)

엔드포인트는 옵션이 많아서 설정에 시간을 더 쓰게 될 거예요. 이 옵션들이 엔드포인트가 원하는 일을 하도록 커스터마이즈해 줘요. 옵션은 엔드포인트가 컨슈머(from)로 쓰이는지, 프로듀서(to)로 쓰이는지, 둘 다인지에 따라 분류되기도 해요.

엔드포인트 설정은 대부분 엔드포인트 URI에 _path_와 query 파라미터로 바로 하는 경우가 많아요. Endpoint DSL과 DataFormat DSL을 쓰면 자바에서 엔드포인트와 데이터 포맷을 _타입 세이프_하게 설정할 수도 있어요.

옵션을 설정할 때 좋은 습관은 Property Placeholders를 사용하는 거예요.

프로퍼티 플레이스홀더는 이런 장점이 있어요:

  • URL, 포트 번호, 민감한 정보 같은 설정을 코드에 하드코딩하는 걸 막아 줘요.

  • 설정을 코드 밖으로 분리할 수 있어요.

  • 코드가 더 유연해지고 재사용하기 좋아져요.

아래 두 섹션에서 모든 옵션을 나열해요. 먼저 컴포넌트, 그다음 엔드포인트 순서예요.

컴포넌트 옵션 (Component Options)

FHIR 컴포넌트는 아래 나열된 옵션들을 지원해요.

Name Description Default Type
encoding (common)
모든 요청에 사용할 인코딩이에요.

Enum values:

  • JSON

  • XML

| | String | | fhirVersion (common) |

사용할 FHIR 버전이에요.

Enum values:

  • DSTU2

  • DSTU2_HL7ORG

  • DSTU2_1

  • DSTU3

  • R4

  • R4B

  • R5

| R4 | String | | log (common) | 모든 요청과 응답을 로그로 남겨요. | false | boolean | | prettyPrint (common) | 모든 요청을 보기 좋게(pretty print) 출력해요. | false | boolean | | serverUrl (common) | FHIR 서버의 베이스 URL이에요. | | String | | bridgeErrorHandler (consumer) | 컨슈머를 Camel 라우팅 에러 핸들러(Error Handler)에 브리지할 수 있게 해 줘요. 즉, Camel 컨슈머가 들어오는 메시지를 집어 올리는 동안 등에서 예외가 발생하면(가능한 경우), 그 예외를 메시지로 처리해서 라우팅 에러 핸들러가 다루게 돼요. 중요: 이것은 서드파티 컴포넌트가 예외가 던져졌을 때 Camel에 알릴 수 있도록 허용하는 경우에만 가능해요. 일부 컴포넌트는 내부에서만 처리하기 때문에 bridgeErrorHandler를 쓸 수 없어요. 다른 상황에서는 Camel 컴포넌트를 개선해서 서드파티 컴포넌트에 연결(hook)해 이를 가능하게 만들 수도 있어요. 기본으로 컨슈머는 org.apache.camel.spi.ExceptionHandler로 예외를 처리하는데, WARN 또는 ERROR 레벨로 로그를 남기고 무시해요. | false | boolean | | lazyStartProducer (producer) | 프로듀서를 느리게(lazy, 첫 메시지 시점에) 시작할지 여부예요. lazy 시작을 쓰면 프로듀서가 시작 중에 실패해서 라우트 시작이 실패할 수 있는 상황에서도 CamelContext와 라우트를 시작할 수 있어요. 시작을 늦춰 두면 시작 실패가 발생했을 때 메시지를 라우팅하는 동안 Camel의 라우팅 에러 핸들러로 처리할 수 있죠. 단, 첫 메시지를 처리할 때 프로듀서를 만들고 시작하는 데 시간이 조금 걸려서 전체 처리 시간이 길어질 수 있다는 점은 감안하세요. | false | boolean | | autowiredEnabled (advanced) | 오토와이어링(autowiring)을 활성화할지 여부예요. 레지스트리에서 일치하는 타입의 인스턴스가 딱 하나 있는지 찾아서, 그 인스턴스로 오토와이어링 옵션(옵션이 autowired로 표시되어 있어야 함)을 자동 설정하는 데 쓰여요. JDBC 데이터 소스, JMS 커넥션 팩토리, AWS 클라이언트 등을 자동 설정할 때 사용할 수 있어요. | true | boolean | | client (advanced) | 커스텀 클라이언트를 쓰려면 이걸 사용해요. | | IGenericClient | | clientFactory (advanced) | 커스텀 클라이언트 팩토리를 쓰려면 이걸 사용해요. | | IRestfulClientFactory | | compress (advanced) | 나가는(POST/PUT) 콘텐츠를 GZIP 형식으로 압축해요. | false | boolean | | configuration (advanced) | 공유 설정을 쓰려면 이걸 사용해요. | | FhirConfiguration | | connectionTimeout (advanced) | 최초 TCP 연결을 수립하려고 시도하는 시간(밀리초)이에요. | 10000 | Integer | | deferModelScanning (advanced) | 이 옵션을 켜 두면, 주어진 타입의 자식 목록에 실제로 접근하기 전까지는 모델 클래스의 자식을 스캔하지 않아요. | false | boolean | | fhirContext (advanced) | FhirContext는 생성 비용이 큰 객체예요. 인스턴스가 여러 개 만들어지는 걸 피하려면 이 옵션으로 직접 설정할 수 있어요. | | FhirContext | | forceConformanceCheck (advanced) | conformance 검사를 강제로 수행해요. | false | boolean | | sessionCookie (advanced) | 모든 요청에 추가할 HTTP 세션 쿠키예요. | | String | | socketTimeout (advanced) | 개별 읽기/쓰기 연산마다 블록되는 시간(밀리초)이에요. | 10000 | Integer | | summary (advanced) |

서버가 _summary 파라미터로 응답을 수정하도록 요청해요.

Enum values:

  • COUNT

  • TEXT

  • DATA

  • TRUE

  • FALSE

| | String | | validationMode (advanced) |

Camel이 FHIR 서버의 conformance 선언문을 언제 검증할지 지정해요.

Enum values:

  • NEVER

  • ONCE

| ONCE | String | | proxyHost (proxy) | 프록시 호스트예요. | | String | | proxyPassword (proxy) | 프록시 비밀번호예요. | | String | | proxyPort (proxy) | 프록시 포트예요. | | Integer | | proxyUser (proxy) | 프록시 사용자 이름이에요. | | String | | accessToken (security) | OAuth 액세스 토큰이에요. | | String | | password (security) | 기본 인증(basic authentication)에 쓸 비밀번호예요. | | String | | username (security) | 기본 인증(basic authentication)에 쓸 사용자 이름이에요. | | String |

엔드포인트 옵션 (Endpoint Options)

FHIR 엔드포인트는 다음 URI 문법으로 설정해요:

fhir:apiName/methodName

다음 path 및 query 파라미터를 사용해요:

경로 파라미터 (Path Parameters)

Name Description Default Type
apiName (common)
필수 수행할 연산의 종류예요.

Enum values:

  • CAPABILITIES

  • CREATE

  • DELETE

  • HISTORY

  • LOAD_PAGE

  • META

  • OPERATION

  • PATCH

  • READ

  • SEARCH

  • TRANSACTION

  • UPDATE

  • VALIDATE

| | FhirApiName | | methodName (common) | 필수 선택한 연산에 대해 수행할 하위 연산(sub operation)이에요. | | String |

쿼리 파라미터 (Query Parameters)

Name Description Default Type
encoding (common)
모든 요청에 사용할 인코딩이에요.

Enum values:

  • JSON

  • XML

| | String | | fhirVersion (common) |

사용할 FHIR 버전이에요.

Enum values:

  • DSTU2

  • DSTU2_HL7ORG

  • DSTU2_1

  • DSTU3

  • R4

  • R4B

  • R5

| R4 | String | | inBody (common) | 교환(exchange)의 In Body로 넘길 파라미터 이름을 설정해요. | | String | | log (common) | 모든 요청과 응답을 로그로 남겨요. | false | boolean | | prettyPrint (common) | 모든 요청을 보기 좋게(pretty print) 출력해요. | false | boolean | | serverUrl (common) | FHIR 서버의 베이스 URL이에요. | | String | | sendEmptyMessageWhenIdle (consumer) | 폴링 컨슈머가 파일을 하나도 폴링하지 못했을 때, 이 옵션을 켜면 대신 빈 메시지(바디 없음)를 보내요. | false | boolean | | bridgeErrorHandler (consumer (advanced)) | 컨슈머를 Camel 라우팅 에러 핸들러(Error Handler)에 브리지할 수 있게 해 줘요. 즉, Camel 컨슈머가 들어오는 메시지를 집어 올리는 동안 등에서 예외가 발생하면(가능한 경우), 그 예외를 메시지로 처리해서 라우팅 에러 핸들러가 다루게 돼요. 중요: 이것은 서드파티 컴포넌트가 예외가 던져졌을 때 Camel에 알릴 수 있도록 허용하는 경우에만 가능해요. 일부 컴포넌트는 내부에서만 처리하기 때문에 bridgeErrorHandler를 쓸 수 없어요. 다른 상황에서는 Camel 컴포넌트를 개선해서 서드파티 컴포넌트에 연결(hook)해 이를 가능하게 만들 수도 있어요. 기본으로 컨슈머는 org.apache.camel.spi.ExceptionHandler로 예외를 처리하는데, WARN 또는 ERROR 레벨로 로그를 남기고 무시해요. | false | boolean | | exceptionHandler (consumer (advanced)) | 컨슈머가 커스텀 ExceptionHandler를 쓰게 할 수 있어요. bridgeErrorHandler 옵션이 활성화되어 있으면 이 옵션은 사용되지 않는다는 점에 주의하세요. 기본으로 컨슈머는 예외를 처리하는데, WARN 또는 ERROR 레벨로 로그를 남기고 무시해요. | | ExceptionHandler | | exchangePattern (consumer (advanced)) |

컨슈머가 교환(exchange)을 만들 때 교환 패턴을 설정해요.

Enum values:

  • InOnly

  • InOut

| | ExchangePattern | | pollStrategy (consumer (advanced)) | 플러그형 org.apache.camel.PollingConsumerPollingStrategy로, Exchange가 만들어져 Camel에서 라우팅되기 전에 폴링 작업 중에 보통 발생하는 에러 처리를 제어하는 커스텀 구현을 제공할 수 있게 해 줘요. | | PollingConsumerPollStrategy | | lazyStartProducer (producer (advanced)) | 프로듀서를 느리게(lazy, 첫 메시지 시점에) 시작할지 여부예요. lazy 시작을 쓰면 프로듀서가 시작 중에 실패해서 라우트 시작이 실패할 수 있는 상황에서도 CamelContext와 라우트를 시작할 수 있어요. 시작을 늦춰 두면 시작 실패가 발생했을 때 메시지를 라우팅하는 동안 Camel의 라우팅 에러 핸들러로 처리할 수 있죠. 단, 첫 메시지를 처리할 때 프로듀서를 만들고 시작하는 데 시간이 조금 걸려서 전체 처리 시간이 길어질 수 있다는 점은 감안하세요. | false | boolean | | client (advanced) | 커스텀 클라이언트를 쓰려면 이걸 사용해요. | | IGenericClient | | clientFactory (advanced) | 커스텀 클라이언트 팩토리를 쓰려면 이걸 사용해요. | | IRestfulClientFactory | | compress (advanced) | 나가는(POST/PUT) 콘텐츠를 GZIP 형식으로 압축해요. | false | boolean | | connectionTimeout (advanced) | 최초 TCP 연결을 수립하려고 시도하는 시간(밀리초)이에요. | 10000 | Integer | | deferModelScanning (advanced) | 이 옵션을 켜 두면, 주어진 타입의 자식 목록에 실제로 접근하기 전까지는 모델 클래스의 자식을 스캔하지 않아요. | false | boolean | | fhirContext (advanced) | FhirContext는 생성 비용이 큰 객체예요. 인스턴스가 여러 개 만들어지는 걸 피하려면 이 옵션으로 직접 설정할 수 있어요. | | FhirContext | | forceConformanceCheck (advanced) | conformance 검사를 강제로 수행해요. | false | boolean | | sessionCookie (advanced) | 모든 요청에 추가할 HTTP 세션 쿠키예요. | | String | | socketTimeout (advanced) | 개별 읽기/쓰기 연산마다 블록되는 시간(밀리초)이에요. | 10000 | Integer | | summary (advanced) |

서버가 _summary 파라미터로 응답을 수정하도록 요청해요.

Enum values:

  • COUNT

  • TEXT

  • DATA

  • TRUE

  • FALSE

| | String | | validationMode (advanced) |

Camel이 FHIR 서버의 conformance 선언문을 언제 검증할지 지정해요.

Enum values:

  • NEVER

  • ONCE

| ONCE | String | | proxyHost (proxy) | 프록시 호스트예요. | | String | | proxyPassword (proxy) | 프록시 비밀번호예요. | | String | | proxyPort (proxy) | 프록시 포트예요. | | Integer | | proxyUser (proxy) | 프록시 사용자 이름이에요. | | String | | backoffErrorThreshold (scheduler) | backoffMultipler가 작동하기 전에 연속으로 발생해야 하는 에러 폴링(무언가 오류로 실패한 폴링) 횟수예요. | | int | | backoffIdleThreshold (scheduler) | backoffMultipler가 작동하기 전에 연속으로 발생해야 하는 유휴(idle) 폴링 횟수예요. | | int | | backoffMultiplier (scheduler) | 연속으로 유휴/에러 폴링이 여러 번 이어지면 예약 폴링 컨슈머가 백오프하도록 해요. multiplier는 다음 실제 시도가 다시 일어나기 전에 건너뛸 폴링 횟수예요. 이 옵션을 사용할 때는 backoffIdleThreshold와/또는 backoffErrorThreshold도 반드시 함께 설정해야 해요. | | int | | delay (scheduler) | 다음 폴링 전까지 대기 시간(밀리초)이에요. | 500 | long | | greedy (scheduler) | greedy를 켜면, 이전 실행이 1개 이상의 메시지를 폴링했을 때 ScheduledPollConsumer가 즉시 다시 실행돼요. | false | boolean | | initialDelay (scheduler) | 첫 폴링이 시작되기 전까지 대기 시간(밀리초)이에요. | 1000 | long | | repeatCount (scheduler) | 발동(fire) 횟수의 최대 한도를 지정해요. 1로 설정하면 스케줄러가 한 번만 발동하고, 5로 설정하면 다섯 번만 발동해요. 0이나 음수는 계속 발동한다는 뜻이에요. | 0 | long | | runLoggingLevel (scheduler) |

컨슈머가 폴링할 때 시작/완료 로그 한 줄을 남겨요. 이 옵션으로 그 로깅 레벨을 설정할 수 있어요.

Enum values:

  • TRACE

  • DEBUG

  • INFO

  • WARN

  • ERROR

  • OFF

| TRACE | LoggingLevel | | scheduledExecutorService (scheduler) | 컨슈머가 사용할 커스텀/공유 스레드 풀을 설정할 수 있게 해 줘요. 기본으로 각 컨슈머는 자체 단일 스레드 풀을 가져요. | | ScheduledExecutorService | | scheduler (scheduler) | camel-spring이나 camel-quartz 컴포넌트의 cron 스케줄러를 사용해요. 내장 스케줄러는 spring 또는 quartz 값을 쓰세요. | none | Object | | schedulerProperties (scheduler) | 커스텀 스케줄러나 Quartz, Spring 기반 스케줄러를 사용할 때 추가 프로퍼티를 설정해요. scheduler. 프리픽스를 가진 다중 값 옵션이에요. | | Map | | startScheduler (scheduler) | 스케줄러를 자동으로 시작할지 여부예요. | true | boolean | | timeUnit (scheduler) |

initialDelay와 delay 옵션의 시간 단위예요.

Enum values:

  • NANOSECONDS

  • MICROSECONDS

  • MILLISECONDS

  • SECONDS

  • MINUTES

  • HOURS

  • DAYS

| MILLISECONDS | TimeUnit | | useFixedDelay (scheduler) | 고정 지연(fixed delay)과 고정 레이트(fixed rate) 중 무엇을 쓸지 제어해요. 자세한 내용은 JDK의 ScheduledExecutorService를 보세요. | true | boolean | | accessToken (security) | OAuth 액세스 토큰이에요. | | String | | password (security) | 기본 인증(basic authentication)에 쓸 비밀번호예요. | | String | | username (security) | 기본 인증(basic authentication)에 쓸 사용자 이름이에요. | | String |

API 파라미터 (13개 API)

FHIR 엔드포인트는 API 기반 컴포넌트라서 어떤 API 이름과 API 메서드를 쓰느냐에 따라 추가 파라미터가 붙어요. API 이름과 API 메서드는 엔드포인트 URI에서 apiName/methodName 경로 파라미터 자리에 들어가요:

fhir:apiName/methodName

API 이름은 아래 표와 같이 13개가 있어요:

API Name Type Description
capabilities Both 서버의 capability statement를 가져오는 API예요.
create Both 서버에 새 리소스 인스턴스를 만드는 create 연산용 API예요.
delete Both 서버 리소스에 논리적 삭제를 수행하는 delete 연산용 API예요.
history Both history 메서드용 API예요.
load-page Both atom bundle 안의 link type=next 태그에 지정된 링크를 써서, 페이지로 나뉜 집합에서 이전/다음 리소스 번들을 로드하는 API예요.
meta Both 리소스나 서버 전체에서 태그와 기타 Meta 요소를 조회·추가·제거할 때 쓰는 meta 연산용 API예요.
operation Both 확장 FHIR 연산(extended operations)용 API예요.
patch Both 서버 리소스에 논리적 패치를 수행하는 patch 연산용 API예요.
read Both read 연산용 API 메서드예요.
search Both 주어진 조건에 맞는 리소스를 검색하는 API예요.
transaction Both 트랜잭션(리소스 모음)을 서버에 보내 하나의 단위로 실행하게 하는 API예요.
update Both 서버 리소스에 논리적 삭제를 수행하는 update 연산용 API예요.
validate Both 리소스를 검증하는 API예요.

각 API는 이어지는 다음 섹션에서 문서화돼 있어요.

API: capabilities

컨슈머와 프로듀서를 모두 지원해요

capabilities API는 다음 문법으로 정의돼요:

fhir:capabilities/methodName?[parameters]

1개 메서드가 아래 표에 나열되어 있고, 이어서 각 메서드의 상세 문법을 보여 줘요. (API 메서드는 문법에서 이름 대신 쓸 수 있는 짧은 _별칭_을 가질 수 있어요)

Method Alias Description
ofType 주어진 모델 타입으로 conformance statement를 조회해요.

Method ofType

시그니처(Signatures):

  • org.hl7.fhir.instance.model.api.IBaseConformance ofType(Class<org.hl7.fhir.instance.model.api.IBaseConformance> type, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/ofType API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
type 모델 타입이에요. Class

위 파라미터 외에도 fhir API는 쿼리 파라미터를 모두 쓸 수 있어요.

파라미터는 엔드포인트 URI에 담거나 메시지 헤더로 동적으로 줄 수도 있어요. 메시지 헤더 이름은 CamelFhir.parameter 형식이어야 해요. inBody 파라미터는 메시지 헤더를 덮어써요. 즉 엔드포인트 파라미터 inBody=myParameterNameHere가 CamelFhir.myParameterNameHere 헤더를 이기는 거죠.

API: create

컨슈머와 프로듀서를 모두 지원해요

create API는 다음 문법으로 정의돼요:

fhir:create/methodName?[parameters]

1개 메서드가 아래 표에 나열되어 있고, 이어서 각 메서드의 상세 문법을 보여 줘요. (API 메서드는 문법에서 이름 대신 쓸 수 있는 짧은 _별칭_을 가질 수 있어요)

Method Alias Description
resource 서버에 IBaseResource를 만들어요.

Method resource

시그니처(Signatures):

  • ca.uhn.fhir.rest.api.MethodOutcome resource(String resourceAsString, String url, ca.uhn.fhir.rest.api.PreferReturnEnum preferReturn, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

  • ca.uhn.fhir.rest.api.MethodOutcome resource(org.hl7.fhir.instance.model.api.IBaseResource resource, String url, ca.uhn.fhir.rest.api.PreferReturnEnum preferReturn, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/resource API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
preferReturn 요청에 Prefer 헤더를 추가해요. 서버가 결과의 일부로 리소스 바디를 포함하거나 생략하도록 요청하는 거죠. 서버가 리소스를 반환하면 파싱돼서 클라이언트가 MethodOutcome#getResource()로 접근할 수 있어요. NULL일 수 있어요. PreferReturnEnum
resource 만들 리소스예요. IBaseResource
resourceAsString 만들 리소스예요. String
url 사용할 검색 URL이에요. 이 URL은 ResourceTypeParameters 형식이어야 해요. 예: Patientname=Smith&identifier=13.2.4.11.4%7C847366 NULL일 수 있어요. String

위 파라미터 외에도 fhir API는 쿼리 파라미터를 모두 쓸 수 있어요.

파라미터는 엔드포인트 URI에 담거나 메시지 헤더로 동적으로 줄 수도 있어요. 메시지 헤더 이름은 CamelFhir.parameter 형식이어야 해요. inBody 파라미터는 메시지 헤더를 덮어써요. 즉 엔드포인트 파라미터 inBody=myParameterNameHere가 CamelFhir.myParameterNameHere 헤더를 이기는 거죠.

API: delete

컨슈머와 프로듀서를 모두 지원해요

delete API는 다음 문법으로 정의돼요:

fhir:delete/methodName?[parameters]

3개 메서드가 아래 표에 나열되어 있고, 이어서 각 메서드의 상세 문법을 보여 줘요. (API 메서드는 문법에서 이름 대신 쓸 수 있는 짧은 _별칭_을 가질 수 있어요)

Method Alias Description
resource 주어진 리소스를 삭제해요.
resourceById 리소스 타입 e로 리소스를 삭제해요.
resourceConditionalByUrl 주어진 검색 URL에 대한 조건부 삭제(conditional delete)로 삭제를 수행하도록 지정해요.

Method resource

시그니처(Signatures):

  • ca.uhn.fhir.rest.api.MethodOutcome resource(org.hl7.fhir.instance.model.api.IBaseResource resource, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/resource API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
resource 삭제할 IBaseResource예요. IBaseResource

Method resourceById

시그니처(Signatures):

  • ca.uhn.fhir.rest.api.MethodOutcome resourceById(String type, String stringId, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

  • ca.uhn.fhir.rest.api.MethodOutcome resourceById(org.hl7.fhir.instance.model.api.IIdType id, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/resourceById API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
id 리소스를 참조하는 IIdType이에요. IIdType
stringId 리소스의 id예요. String
type 리소스 타입이에요. 예: Patient String

Method resourceConditionalByUrl

시그니처(Signatures):

  • ca.uhn.fhir.rest.api.MethodOutcome resourceConditionalByUrl(String url, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/resourceConditionalByUrl API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
url 사용할 검색 URL이에요. 이 URL은 ResourceTypeParameters 형식이어야 해요. 예: Patientname=Smith&identifier=13.2.4.11.4%7C847366 String

위 파라미터 외에도 fhir API는 쿼리 파라미터를 모두 쓸 수 있어요.

파라미터는 엔드포인트 URI에 담거나 메시지 헤더로 동적으로 줄 수도 있어요. 메시지 헤더 이름은 CamelFhir.parameter 형식이어야 해요. inBody 파라미터는 메시지 헤더를 덮어써요. 즉 엔드포인트 파라미터 inBody=myParameterNameHere가 CamelFhir.myParameterNameHere 헤더를 이기는 거죠.

API: history

컨슈머와 프로듀서를 모두 지원해요

history API는 다음 문법으로 정의돼요:

fhir:history/methodName?[parameters]

3개 메서드가 아래 표에 나열되어 있고, 이어서 각 메서드의 상세 문법을 보여 줘요. (API 메서드는 문법에서 이름 대신 쓸 수 있는 짧은 _별칭_을 가질 수 있어요)

Method Alias Description
onInstance 서버에서 특정 리소스(ID와 타입으로 지정)의 모든 버전에 걸쳐 연산을 수행해요.
onServer 서버에서 모든 타입의 모든 리소스, 그 모든 버전에 걸쳐 연산을 수행해요.
onType 서버에서 주어진 타입의 모든 리소스, 그 모든 버전에 걸쳐 연산을 수행해요.

Method onInstance

시그니처(Signatures):

  • org.hl7.fhir.instance.model.api.IBaseBundle onInstance(org.hl7.fhir.instance.model.api.IIdType id, Class<org.hl7.fhir.instance.model.api.IBaseBundle> returnType, Integer count, java.util.Date cutoff, org.hl7.fhir.instance.model.api.IPrimitiveType<java.util.Date> iCutoff, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/onInstance API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
count 서버가 theCount 개수까지만 리소스를 반환하도록 요청해요. NULL일 수 있어요. Integer
cutoff 서버가 주어진 시점(포함) 이후에 만들어진 리소스 버전만 반환하도록 요청해요. NULL일 수 있어요. Date
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
iCutoff 서버가 주어진 시점(포함) 이후에 만들어진 리소스 버전만 반환하도록 요청해요. NULL일 수 있어요. IPrimitiveType
id 리소스 타입과 리소스 ID가 모두 채워져 있어야 하는 IIdType이에요. IIdType
returnType 메서드가 Bundle 리소스(예: ca.uhn.fhir.model.dstu2.resource.Bundle)를 반환하도록 요청해요. DSTU2 서버에 접근할 때 이 메서드를 사용하세요. Class

Method onServer

시그니처(Signatures):

  • org.hl7.fhir.instance.model.api.IBaseBundle onServer(Class<org.hl7.fhir.instance.model.api.IBaseBundle> returnType, Integer count, java.util.Date cutoff, org.hl7.fhir.instance.model.api.IPrimitiveType<java.util.Date> iCutoff, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/onServer API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
count 서버가 theCount 개수까지만 리소스를 반환하도록 요청해요. NULL일 수 있어요. Integer
cutoff 서버가 주어진 시점(포함) 이후에 만들어진 리소스 버전만 반환하도록 요청해요. NULL일 수 있어요. Date
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
iCutoff 서버가 주어진 시점(포함) 이후에 만들어진 리소스 버전만 반환하도록 요청해요. NULL일 수 있어요. IPrimitiveType
returnType 메서드가 Bundle 리소스(예: ca.uhn.fhir.model.dstu2.resource.Bundle)를 반환하도록 요청해요. DSTU2 서버에 접근할 때 이 메서드를 사용하세요. Class

Method onType

시그니처(Signatures):

  • org.hl7.fhir.instance.model.api.IBaseBundle onType(Class<org.hl7.fhir.instance.model.api.IBaseResource> resourceType, Class<org.hl7.fhir.instance.model.api.IBaseBundle> returnType, Integer count, java.util.Date cutoff, org.hl7.fhir.instance.model.api.IPrimitiveType<java.util.Date> iCutoff, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/onType API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
count 서버가 theCount 개수까지만 리소스를 반환하도록 요청해요. NULL일 수 있어요. Integer
cutoff 서버가 주어진 시점(포함) 이후에 만들어진 리소스 버전만 반환하도록 요청해요. NULL일 수 있어요. Date
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
iCutoff 서버가 주어진 시점(포함) 이후에 만들어진 리소스 버전만 반환하도록 요청해요. NULL일 수 있어요. IPrimitiveType
resourceType 검색할 리소스 타입이에요. Class
returnType 메서드가 Bundle 리소스(예: ca.uhn.fhir.model.dstu2.resource.Bundle)를 반환하도록 요청해요. DSTU2 서버에 접근할 때 이 메서드를 사용하세요. Class

위 파라미터 외에도 fhir API는 쿼리 파라미터를 모두 쓸 수 있어요.

파라미터는 엔드포인트 URI에 담거나 메시지 헤더로 동적으로 줄 수도 있어요. 메시지 헤더 이름은 CamelFhir.parameter 형식이어야 해요. inBody 파라미터는 메시지 헤더를 덮어써요. 즉 엔드포인트 파라미터 inBody=myParameterNameHere가 CamelFhir.myParameterNameHere 헤더를 이기는 거죠.

API: load-page

컨슈머와 프로듀서를 모두 지원해요

load-page API는 다음 문법으로 정의돼요:

fhir:load-page/methodName?[parameters]

3개 메서드가 아래 표에 나열되어 있고, 이어서 각 메서드의 상세 문법을 보여 줘요. (API 메서드는 문법에서 이름 대신 쓸 수 있는 짧은 _별칭_을 가질 수 있어요)

Method Alias Description
byUrl 주어진 URL과 번들 타입으로 결과 페이지를 로드해서 DSTU1 Atom 번들을 반환해요.
next 번들에서 relation이 next인 링크를 써서 다음 결과 페이지를 로드해요.
previous 번들에서 relation이 prev인 링크를 써서 이전 결과 페이지를 로드해요.

Method byUrl

시그니처(Signatures):

  • org.hl7.fhir.instance.model.api.IBaseBundle byUrl(String url, Class<org.hl7.fhir.instance.model.api.IBaseBundle> returnType, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/byUrl API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
returnType 반환 타입이에요. Class
url 검색 url이에요. String

Method next

시그니처(Signatures):

  • org.hl7.fhir.instance.model.api.IBaseBundle next(org.hl7.fhir.instance.model.api.IBaseBundle bundle, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/next API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
bundle IBaseBundle이에요. IBaseBundle
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map

Method previous

시그니처(Signatures):

  • org.hl7.fhir.instance.model.api.IBaseBundle previous(org.hl7.fhir.instance.model.api.IBaseBundle bundle, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/previous API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
bundle IBaseBundle이에요. IBaseBundle
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map

위 파라미터 외에도 fhir API는 쿼리 파라미터를 모두 쓸 수 있어요.

파라미터는 엔드포인트 URI에 담거나 메시지 헤더로 동적으로 줄 수도 있어요. 메시지 헤더 이름은 CamelFhir.parameter 형식이어야 해요. inBody 파라미터는 메시지 헤더를 덮어써요. 즉 엔드포인트 파라미터 inBody=myParameterNameHere가 CamelFhir.myParameterNameHere 헤더를 이기는 거죠.

API: meta

컨슈머와 프로듀서를 모두 지원해요

meta API는 다음 문법으로 정의돼요:

fhir:meta/methodName?[parameters]

5개 메서드가 아래 표에 나열되어 있고, 이어서 각 메서드의 상세 문법을 보여 줘요. (API 메서드는 문법에서 이름 대신 쓸 수 있는 짧은 _별칭_을 가질 수 있어요)

Method Alias Description
add 주어진 메타데이터의 요소들을 기존 집합에 추가해요(아무것도 제거하지 않아요).
delete 주어진 id에서 주어진 메타데이터의 요소들을 제거해요.
getFromResource 특정 리소스에서 현재 메타데이터를 가져와요.
getFromServer 서버 전체에서 현재 메타데이터를 가져와요.
getFromType 특정 타입에서 현재 메타데이터를 가져와요.

Method add

시그니처(Signatures):

  • org.hl7.fhir.instance.model.api.IBaseMetaType add(org.hl7.fhir.instance.model.api.IBaseMetaType meta, org.hl7.fhir.instance.model.api.IIdType id, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/add API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
id id예요. IIdType
meta IBaseMetaType 클래스예요. IBaseMetaType

Method delete

시그니처(Signatures):

  • org.hl7.fhir.instance.model.api.IBaseMetaType delete(org.hl7.fhir.instance.model.api.IBaseMetaType meta, org.hl7.fhir.instance.model.api.IIdType id, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/delete API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
id id예요. IIdType
meta IBaseMetaType 클래스예요. IBaseMetaType

Method getFromResource

시그니처(Signatures):

  • org.hl7.fhir.instance.model.api.IBaseMetaType getFromResource(Class<org.hl7.fhir.instance.model.api.IBaseMetaType> metaType, org.hl7.fhir.instance.model.api.IIdType id, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/getFromResource API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
id id예요. IIdType
metaType IBaseMetaType 클래스예요. Class

Method getFromServer

시그니처(Signatures):

  • org.hl7.fhir.instance.model.api.IBaseMetaType getFromServer(Class<org.hl7.fhir.instance.model.api.IBaseMetaType> metaType, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/getFromServer API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
metaType 주어진 FHIR 모델 버전의 meta 데이터타입 타입이에요(MetaDt.class 또는 MetaType.class여야 해요). Class

Method getFromType

시그니처(Signatures):

  • org.hl7.fhir.instance.model.api.IBaseMetaType getFromType(Class<org.hl7.fhir.instance.model.api.IBaseMetaType> metaType, String resourceType, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/getFromType API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
metaType IBaseMetaType 클래스예요. Class
resourceType 리소스 타입이에요. 예: Patient String

위 파라미터 외에도 fhir API는 쿼리 파라미터를 모두 쓸 수 있어요.

파라미터는 엔드포인트 URI에 담거나 메시지 헤더로 동적으로 줄 수도 있어요. 메시지 헤더 이름은 CamelFhir.parameter 형식이어야 해요. inBody 파라미터는 메시지 헤더를 덮어써요. 즉 엔드포인트 파라미터 inBody=myParameterNameHere가 CamelFhir.myParameterNameHere 헤더를 이기는 거죠.

API: operation

컨슈머와 프로듀서를 모두 지원해요

operation API는 다음 문법으로 정의돼요:

fhir:operation/methodName?[parameters]

5개 메서드가 아래 표에 나열되어 있고, 이어서 각 메서드의 상세 문법을 보여 줘요. (API 메서드는 문법에서 이름 대신 쓸 수 있는 짧은 _별칭_을 가질 수 있어요)

Method Alias Description
onInstance 서버에서 특정 리소스(ID와 타입으로 지정)의 모든 버전에 걸쳐 연산을 수행해요.
onInstanceVersion 이 연산은 리소스의 특정 버전에 대해 동작해요.
onServer 서버에서 모든 타입의 모든 리소스, 그 모든 버전에 걸쳐 연산을 수행해요.
onType 서버에서 주어진 타입의 모든 리소스, 그 모든 버전에 걸쳐 연산을 수행해요.
processMessage 이 연산은 FHIR 사양에서 정의된 $process-message로 불려요.

Method onInstance

시그니처(Signatures):

  • org.hl7.fhir.instance.model.api.IBaseResource onInstance(org.hl7.fhir.instance.model.api.IIdType id, String name, org.hl7.fhir.instance.model.api.IBaseParameters parameters, Class<org.hl7.fhir.instance.model.api.IBaseParameters> outputParameterType, boolean useHttpGet, Class<org.hl7.fhir.instance.model.api.IBaseResource> returnType, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/onInstance API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
id 리소스예요(버전은 제거돼요). IIdType
name 연산 이름이에요. String
outputParameterType 출력 파라미터에 쓸 타입이에요(쓰고 있는 FHIR 구조 버전에서 가져온 Parameters.class로 설정해야 해요). NULL일 수 있어요. Class
parameters 입력으로 쓸 파라미터예요. 연산이 입력 파라미터를 필요로 하지 않으면 null일 수도 있어요. IBaseParameters
returnType 이 연산이 Parameters 리소스 대신 단일 리소스 바디를 반환 타입으로 돌려준다면, 이 메서드로 그 리소스 타입을 지정해요. Parameters 리소스 대신 번들을 반환하는 특정 연산(예: Patient/NNN/$everything)에 유용해요. NULL일 수 있어요. Class
useHttpGet HTTP GET 동사를 사용해요. Boolean

Method onInstanceVersion

시그니처(Signatures):

  • org.hl7.fhir.instance.model.api.IBaseResource onInstanceVersion(org.hl7.fhir.instance.model.api.IIdType id, String name, org.hl7.fhir.instance.model.api.IBaseParameters parameters, Class<org.hl7.fhir.instance.model.api.IBaseParameters> outputParameterType, boolean useHttpGet, Class<org.hl7.fhir.instance.model.api.IBaseResource> returnType, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/onInstanceVersion API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
id 리소스 버전이에요. IIdType
name 연산 이름이에요. String
outputParameterType 출력 파라미터에 쓸 타입이에요(쓰고 있는 FHIR 구조 버전에서 가져온 Parameters.class로 설정해야 해요). NULL일 수 있어요. Class
parameters 입력으로 쓸 파라미터예요. 연산이 입력 파라미터를 필요로 하지 않으면 null일 수도 있어요. IBaseParameters
returnType 이 연산이 Parameters 리소스 대신 단일 리소스 바디를 반환 타입으로 돌려준다면, 이 메서드로 그 리소스 타입을 지정해요. Parameters 리소스 대신 번들을 반환하는 특정 연산(예: Patient/NNN/$everything)에 유용해요. NULL일 수 있어요. Class
useHttpGet HTTP GET 동사를 사용해요. Boolean

Method onServer

시그니처(Signatures):

  • org.hl7.fhir.instance.model.api.IBaseResource onServer(String name, org.hl7.fhir.instance.model.api.IBaseParameters parameters, Class<org.hl7.fhir.instance.model.api.IBaseParameters> outputParameterType, boolean useHttpGet, Class<org.hl7.fhir.instance.model.api.IBaseResource> returnType, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/onServer API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
name 연산 이름이에요. String
outputParameterType 출력 파라미터에 쓸 타입이에요(쓰고 있는 FHIR 구조 버전에서 가져온 Parameters.class로 설정해야 해요). NULL일 수 있어요. Class
parameters 입력으로 쓸 파라미터예요. 연산이 입력 파라미터를 필요로 하지 않으면 null일 수도 있어요. IBaseParameters
returnType 이 연산이 Parameters 리소스 대신 단일 리소스 바디를 반환 타입으로 돌려준다면, 이 메서드로 그 리소스 타입을 지정해요. Parameters 리소스 대신 번들을 반환하는 특정 연산(예: Patient/NNN/$everything)에 유용해요. NULL일 수 있어요. Class
useHttpGet HTTP GET 동사를 사용해요. Boolean

Method onType

시그니처(Signatures):

  • org.hl7.fhir.instance.model.api.IBaseResource onType(Class<org.hl7.fhir.instance.model.api.IBaseResource> resourceType, String name, org.hl7.fhir.instance.model.api.IBaseParameters parameters, Class<org.hl7.fhir.instance.model.api.IBaseParameters> outputParameterType, boolean useHttpGet, Class<org.hl7.fhir.instance.model.api.IBaseResource> returnType, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/onType API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
name 연산 이름이에요. String
outputParameterType 출력 파라미터에 쓸 타입이에요(쓰고 있는 FHIR 구조 버전에서 가져온 Parameters.class로 설정해야 해요). NULL일 수 있어요. Class
parameters 입력으로 쓸 파라미터예요. 연산이 입력 파라미터를 필요로 하지 않으면 null일 수도 있어요. IBaseParameters
resourceType 연산을 수행할 리소스 타입이에요. Class
returnType 이 연산이 Parameters 리소스 대신 단일 리소스 바디를 반환 타입으로 돌려준다면, 이 메서드로 그 리소스 타입을 지정해요. Parameters 리소스 대신 번들을 반환하는 특정 연산(예: Patient/NNN/$everything)에 유용해요. NULL일 수 있어요. Class
useHttpGet HTTP GET 동사를 사용해요. Boolean

Method processMessage

시그니처(Signatures):

  • org.hl7.fhir.instance.model.api.IBaseBundle processMessage(String respondToUri, org.hl7.fhir.instance.model.api.IBaseBundle msgBundle, boolean asynchronous, Class<org.hl7.fhir.instance.model.api.IBaseBundle> responseClass, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/processMessage API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
asynchronous 메시지를 비동기로 처리할지 동기로 처리할지 지정해요. 기본값은 동기예요. Boolean
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
msgBundle 메시징 서버에 POST할 Message Bundle을 설정해요. IBaseBundle
respondToUri 수신 서버의 응답을 이 URI로 보내야 한다는 것을 나타내는 선택적 쿼리 파라미터예요. NULL일 수 있어요. String
responseClass 응답 클래스예요. Class

위 파라미터 외에도 fhir API는 쿼리 파라미터를 모두 쓸 수 있어요.

파라미터는 엔드포인트 URI에 담거나 메시지 헤더로 동적으로 줄 수도 있어요. 메시지 헤더 이름은 CamelFhir.parameter 형식이어야 해요. inBody 파라미터는 메시지 헤더를 덮어써요. 즉 엔드포인트 파라미터 inBody=myParameterNameHere가 CamelFhir.myParameterNameHere 헤더를 이기는 거죠.

API: patch

컨슈머와 프로듀서를 모두 지원해요

patch API는 다음 문법으로 정의돼요:

fhir:patch/methodName?[parameters]

2개 메서드가 아래 표에 나열되어 있고, 이어서 각 메서드의 상세 문법을 보여 줘요. (API 메서드는 문법에서 이름 대신 쓸 수 있는 짧은 _별칭_을 가질 수 있어요)

Method Alias Description
patchById 주어진 리소스 ID에 패치를 적용해요.
patchByUrl 주어진 검색 URL에 대한 조건부 생성(conditional create)으로 업데이트를 수행하도록 지정해요.

Method patchById

시그니처(Signatures):

  • ca.uhn.fhir.rest.api.MethodOutcome patchById(String patchBody, String stringId, ca.uhn.fhir.rest.api.PreferReturnEnum preferReturn, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

  • ca.uhn.fhir.rest.api.MethodOutcome patchById(String patchBody, org.hl7.fhir.instance.model.api.IIdType id, ca.uhn.fhir.rest.api.PreferReturnEnum preferReturn, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/patchById API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
id 패치할 리소스 ID예요. IIdType
patchBody XML 또는 JSON으로 직렬화된 패치 문서의 바디예요. http://jsonpatch.com/ 또는 http://tools.ietf.org/html/rfc5261을 따라야 해요. String
preferReturn 요청에 Prefer 헤더를 추가해요. 서버가 결과의 일부로 리소스 바디를 포함하거나 생략하도록 요청하는 거죠. 서버가 리소스를 반환하면 파싱돼서 클라이언트가 MethodOutcome#getResource()로 접근할 수 있어요. PreferReturnEnum
stringId 패치할 리소스 ID예요. String

Method patchByUrl

시그니처(Signatures):

  • ca.uhn.fhir.rest.api.MethodOutcome patchByUrl(String patchBody, String url, ca.uhn.fhir.rest.api.PreferReturnEnum preferReturn, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/patchByUrl API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
patchBody XML 또는 JSON으로 직렬화된 패치 문서의 바디예요. http://jsonpatch.com/ 또는 http://tools.ietf.org/html/rfc5261을 따라야 해요. String
preferReturn 요청에 Prefer 헤더를 추가해요. 서버가 결과의 일부로 리소스 바디를 포함하거나 생략하도록 요청하는 거죠. 서버가 리소스를 반환하면 파싱돼서 클라이언트가 MethodOutcome#getResource()로 접근할 수 있어요. PreferReturnEnum
url 사용할 검색 URL이에요. 이 URL은 ResourceTypeParameters 형식이어야 해요. 예: Patientname=Smith&identifier=13.2.4.11.4%7C847366 String

위 파라미터 외에도 fhir API는 쿼리 파라미터를 모두 쓸 수 있어요.

파라미터는 엔드포인트 URI에 담거나 메시지 헤더로 동적으로 줄 수도 있어요. 메시지 헤더 이름은 CamelFhir.parameter 형식이어야 해요. inBody 파라미터는 메시지 헤더를 덮어써요. 즉 엔드포인트 파라미터 inBody=myParameterNameHere가 CamelFhir.myParameterNameHere 헤더를 이기는 거죠.

API: read

컨슈머와 프로듀서를 모두 지원해요

read API는 다음 문법으로 정의돼요:

fhir:read/methodName?[parameters]

2개 메서드가 아래 표에 나열되어 있고, 이어서 각 메서드의 상세 문법을 보여 줘요. (API 메서드는 문법에서 이름 대신 쓸 수 있는 짧은 _별칭_을 가질 수 있어요)

Method Alias Description
resourceById id로 서버의 IBaseResource를 읽어요.
resourceByUrl url로 서버의 IBaseResource를 읽어요.

Method resourceById

시그니처(Signatures):

  • org.hl7.fhir.instance.model.api.IBaseResource resourceById(Class<org.hl7.fhir.instance.model.api.IBaseResource> resource, Long longId, String ifVersionMatches, Boolean returnNull, org.hl7.fhir.instance.model.api.IBaseResource returnResource, Boolean throwError, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

  • org.hl7.fhir.instance.model.api.IBaseResource resourceById(Class<org.hl7.fhir.instance.model.api.IBaseResource> resource, String stringId, String version, String ifVersionMatches, Boolean returnNull, org.hl7.fhir.instance.model.api.IBaseResource returnResource, Boolean throwError, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

  • org.hl7.fhir.instance.model.api.IBaseResource resourceById(Class<org.hl7.fhir.instance.model.api.IBaseResource> resource, org.hl7.fhir.instance.model.api.IIdType id, String ifVersionMatches, Boolean returnNull, org.hl7.fhir.instance.model.api.IBaseResource returnResource, Boolean throwError, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

  • org.hl7.fhir.instance.model.api.IBaseResource resourceById(String resourceClass, Long longId, String ifVersionMatches, Boolean returnNull, org.hl7.fhir.instance.model.api.IBaseResource returnResource, Boolean throwError, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

  • org.hl7.fhir.instance.model.api.IBaseResource resourceById(String resourceClass, String stringId, String ifVersionMatches, String version, Boolean returnNull, org.hl7.fhir.instance.model.api.IBaseResource returnResource, Boolean throwError, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

  • org.hl7.fhir.instance.model.api.IBaseResource resourceById(String resourceClass, org.hl7.fhir.instance.model.api.IIdType id, String ifVersionMatches, Boolean returnNull, org.hl7.fhir.instance.model.api.IBaseResource returnResource, Boolean throwError, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/resourceById API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
id 리소스를 참조하는 IIdType이에요. IIdType
ifVersionMatches 서버의 최신 버전과 비교할 버전이에요. String
longId 리소스 ID예요. Long
resource 읽을 리소스예요(예: Patient). Class
resourceClass 읽을 리소스예요(예: Patient). String
returnNull 버전이 일치하면 null을 반환해요. Boolean
returnResource 버전이 일치하면 리소스를 반환해요. IBaseResource
stringId 리소스 ID예요. String
throwError 버전이 일치하면 에러를 던져요. Boolean
version 리소스 버전이에요. String

Method resourceByUrl

시그니처(Signatures):

  • org.hl7.fhir.instance.model.api.IBaseResource resourceByUrl(Class<org.hl7.fhir.instance.model.api.IBaseResource> resource, String url, String ifVersionMatches, Boolean returnNull, org.hl7.fhir.instance.model.api.IBaseResource returnResource, Boolean throwError, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

  • org.hl7.fhir.instance.model.api.IBaseResource resourceByUrl(Class<org.hl7.fhir.instance.model.api.IBaseResource> resource, org.hl7.fhir.instance.model.api.IIdType iUrl, String ifVersionMatches, Boolean returnNull, org.hl7.fhir.instance.model.api.IBaseResource returnResource, Boolean throwError, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

  • org.hl7.fhir.instance.model.api.IBaseResource resourceByUrl(String resourceClass, String url, String ifVersionMatches, Boolean returnNull, org.hl7.fhir.instance.model.api.IBaseResource returnResource, Boolean throwError, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

  • org.hl7.fhir.instance.model.api.IBaseResource resourceByUrl(String resourceClass, org.hl7.fhir.instance.model.api.IIdType iUrl, String ifVersionMatches, Boolean returnNull, org.hl7.fhir.instance.model.api.IBaseResource returnResource, Boolean throwError, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/resourceByUrl API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
iUrl 절대 url로 리소스를 참조하는 IIdType이에요. IIdType
ifVersionMatches 서버의 최신 버전과 비교할 버전이에요. String
resource 읽을 리소스예요(예: Patient). Class
resourceClass 읽을 리소스예요(예: Patient.class). String
returnNull 버전이 일치하면 null을 반환해요. Boolean
returnResource 버전이 일치하면 리소스를 반환해요. IBaseResource
throwError 버전이 일치하면 에러를 던져요. Boolean
url 절대 url로 리소스를 참조해요. String

위 파라미터 외에도 fhir API는 쿼리 파라미터를 모두 쓸 수 있어요.

파라미터는 엔드포인트 URI에 담거나 메시지 헤더로 동적으로 줄 수도 있어요. 메시지 헤더 이름은 CamelFhir.parameter 형식이어야 해요. inBody 파라미터는 메시지 헤더를 덮어써요. 즉 엔드포인트 파라미터 inBody=myParameterNameHere가 CamelFhir.myParameterNameHere 헤더를 이기는 거죠.

컨슈머와 프로듀서를 모두 지원해요

search API는 다음 문법으로 정의돼요:

fhir:search/methodName?[parameters]

2개 메서드가 아래 표에 나열되어 있고, 이어서 각 메서드의 상세 문법을 보여 줘요. (API 메서드는 문법에서 이름 대신 쓸 수 있는 짧은 _별칭_을 가질 수 있어요)

Method Alias Description
searchByResource 리소스 이름으로 검색을 수행해요.
searchByUrl URL로 직접 검색을 수행해요.

Method searchByResource

시그니처(Signatures):

  • org.hl7.fhir.instance.model.api.IBaseBundle searchByResource(String resourceName, java.util.Map<String, java.util.List> searchParameters, ca.uhn.fhir.rest.api.SearchStyleEnum searchStyle, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/searchByResource API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
resourceName 검색할 리소스예요. String
searchParameters 쿼리에 쓸 검색 파라미터 집합이에요. Map
searchStyle 쿼리가 주어진 방식으로 검색을 수행하도록 강제해요(가능한 방식은 FHIR Search Specification에 설명돼 있어요). 기본 검색 방식은 HTTP POST예요. SearchStyleEnum

Method searchByUrl

시그니처(Signatures):

  • org.hl7.fhir.instance.model.api.IBaseBundle searchByUrl(String url, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/searchByUrl API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
url 검색할 URL이에요. 이 URL은 완전한 형태(예: http://example.com/base/Patientname=foo)일 수 있는데, 그러면 클라이언트의 베이스 URL은 무시돼요. 상대 형태(예: Patientname=foo)일 수도 있는데, 그러면 클라이언트의 베이스 URL이 사용돼요. String

위 파라미터 외에도 fhir API는 쿼리 파라미터를 모두 쓸 수 있어요.

파라미터는 엔드포인트 URI에 담거나 메시지 헤더로 동적으로 줄 수도 있어요. 메시지 헤더 이름은 CamelFhir.parameter 형식이어야 해요. inBody 파라미터는 메시지 헤더를 덮어써요. 즉 엔드포인트 파라미터 inBody=myParameterNameHere가 CamelFhir.myParameterNameHere 헤더를 이기는 거죠.

API: transaction

컨슈머와 프로듀서를 모두 지원해요

transaction API는 다음 문법으로 정의돼요:

fhir:transaction/methodName?[parameters]

2개 메서드가 아래 표에 나열되어 있고, 이어서 각 메서드의 상세 문법을 보여 줘요. (API 메서드는 문법에서 이름 대신 쓸 수 있는 짧은 _별칭_을 가질 수 있어요)

Method Alias Description
withBundle 주어진 원시 텍스트(Bundle 리소스여야 해요)를 트랜잭션 입력으로 사용해요.
withResources 리소스 목록을 트랜잭션 입력으로 사용해요.

Method withBundle

시그니처(Signatures):

  • String withBundle(String stringBundle, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

  • org.hl7.fhir.instance.model.api.IBaseBundle withBundle(org.hl7.fhir.instance.model.api.IBaseBundle bundle, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/withBundle API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
bundle 트랜잭션에 쓸 번들이에요. IBaseBundle
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
stringBundle 트랜잭션에 쓸 번들이에요. String

Method withResources

시그니처(Signatures):

  • java.util.List<org.hl7.fhir.instance.model.api.IBaseResource> withResources(java.util.List<org.hl7.fhir.instance.model.api.IBaseResource> resources, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/withResources API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
resources 트랜잭션에 쓸 리소스들이에요. List

위 파라미터 외에도 fhir API는 쿼리 파라미터를 모두 쓸 수 있어요.

파라미터는 엔드포인트 URI에 담거나 메시지 헤더로 동적으로 줄 수도 있어요. 메시지 헤더 이름은 CamelFhir.parameter 형식이어야 해요. inBody 파라미터는 메시지 헤더를 덮어써요. 즉 엔드포인트 파라미터 inBody=myParameterNameHere가 CamelFhir.myParameterNameHere 헤더를 이기는 거죠.

API: update

컨슈머와 프로듀서를 모두 지원해요

update API는 다음 문법으로 정의돼요:

fhir:update/methodName?[parameters]

2개 메서드가 아래 표에 나열되어 있고, 이어서 각 메서드의 상세 문법을 보여 줘요. (API 메서드는 문법에서 이름 대신 쓸 수 있는 짧은 _별칭_을 가질 수 있어요)

Method Alias Description
resource id로 서버의 IBaseResource를 업데이트해요.
resourceBySearchUrl 검색 url로 서버의 IBaseResource를 업데이트해요.

Method resource

시그니처(Signatures):

  • ca.uhn.fhir.rest.api.MethodOutcome resource(String resourceAsString, String stringId, ca.uhn.fhir.rest.api.PreferReturnEnum preferReturn, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

  • ca.uhn.fhir.rest.api.MethodOutcome resource(String resourceAsString, org.hl7.fhir.instance.model.api.IIdType id, ca.uhn.fhir.rest.api.PreferReturnEnum preferReturn, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

  • ca.uhn.fhir.rest.api.MethodOutcome resource(org.hl7.fhir.instance.model.api.IBaseResource resource, String stringId, ca.uhn.fhir.rest.api.PreferReturnEnum preferReturn, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

  • ca.uhn.fhir.rest.api.MethodOutcome resource(org.hl7.fhir.instance.model.api.IBaseResource resource, org.hl7.fhir.instance.model.api.IIdType id, ca.uhn.fhir.rest.api.PreferReturnEnum preferReturn, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/resource API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
id 리소스를 참조하는 IIdType이에요. IIdType
preferReturn 서버가 결과의 일부로 리소스 바디를 포함할지 생략할지 지정해요. PreferReturnEnum
resource 업데이트할 리소스예요(예: Patient). IBaseResource
resourceAsString 업데이트할 리소스 바디예요. String
stringId 리소스를 참조하는 ID예요. String

Method resourceBySearchUrl

시그니처(Signatures):

  • ca.uhn.fhir.rest.api.MethodOutcome resourceBySearchUrl(String resourceAsString, String url, ca.uhn.fhir.rest.api.PreferReturnEnum preferReturn, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

  • ca.uhn.fhir.rest.api.MethodOutcome resourceBySearchUrl(org.hl7.fhir.instance.model.api.IBaseResource resource, String url, ca.uhn.fhir.rest.api.PreferReturnEnum preferReturn, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/resourceBySearchUrl API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
preferReturn 서버가 결과의 일부로 리소스 바디를 포함할지 생략할지 지정해요. PreferReturnEnum
resource 업데이트할 리소스예요(예: Patient). IBaseResource
resourceAsString 업데이트할 리소스 바디예요. String
url 주어진 검색 URL에 대한 조건부 생성(conditional create)으로 업데이트를 수행하도록 지정해요. String

위 파라미터 외에도 fhir API는 쿼리 파라미터를 모두 쓸 수 있어요.

파라미터는 엔드포인트 URI에 담거나 메시지 헤더로 동적으로 줄 수도 있어요. 메시지 헤더 이름은 CamelFhir.parameter 형식이어야 해요. inBody 파라미터는 메시지 헤더를 덮어써요. 즉 엔드포인트 파라미터 inBody=myParameterNameHere가 CamelFhir.myParameterNameHere 헤더를 이기는 거죠.

API: validate

컨슈머와 프로듀서를 모두 지원해요

validate API는 다음 문법으로 정의돼요:

fhir:validate/methodName?[parameters]

1개 메서드가 아래 표에 나열되어 있고, 이어서 각 메서드의 상세 문법을 보여 줘요. (API 메서드는 문법에서 이름 대신 쓸 수 있는 짧은 _별칭_을 가질 수 있어요)

Method Alias Description
resource 리소스를 검증해요.

Method resource

시그니처(Signatures):

  • ca.uhn.fhir.rest.api.MethodOutcome resource(String resourceAsString, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

  • ca.uhn.fhir.rest.api.MethodOutcome resource(org.hl7.fhir.instance.model.api.IBaseResource resource, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);

fhir/resource API 메서드는 아래 표에 나열된 파라미터를 사용해요:

Parameter Description Type
extraParameters 넘길 수 있는 파라미터 전체 목록은 ExtraParameters를 보세요. NULL일 수 있어요. Map
resource 검증할 IBaseResource예요. IBaseResource
resourceAsString 검증할 원시(raw) 리소스예요. String

위 파라미터 외에도 fhir API는 쿼리 파라미터를 모두 쓸 수 있어요.

파라미터는 엔드포인트 URI에 담거나 메시지 헤더로 동적으로 줄 수도 있어요. 메시지 헤더 이름은 CamelFhir.parameter 형식이어야 해요. inBody 파라미터는 메시지 헤더를 덮어써요. 즉 엔드포인트 파라미터 inBody=myParameterNameHere가 CamelFhir.myParameterNameHere 헤더를 이기는 거죠.

참고 이 컴포넌트는 API 기반이라서 엔드포인트 옵션 외에도 Camel- 접두사가 붙은 교환 헤더로 호출별 파라미터를 넘길 수 있어요. 라우트가 신뢰할 수 없는 프로듀서에서 메시지를 받는다면, 메시지가 이 컴포넌트에 닿기 전에 신뢰 경계에서 removeHeaders("Camel*") 같은 방법으로 이 내부 헤더들을 걷어내야 해요. 그래야 발신자가 API 호출을 덮어쓸 수 없어요. 자세한 내용은 Camel 보안 모델을 보세요.

더 알아보기 (Learn more)

  • HAPI-FHIR — FHIR 컴포넌트가 내부에서 사용하는 자바 오픈소스 FHIR 구현체의 공식 사이트예요. 클라이언트와 모델 클래스의 동작 원리가 궁금할 때 참고하세요.
  • Camel 보안 모델 — Camel* 내부 헤더를 신뢰 경계에서 제거해야 하는 이유와 컴포넌트 보안 지침을 설명해요.
  • Camel 컴포넌트 개요 — 다른 컴포넌트의 설정 개념(component/endpoint 옵션, property placeholder)과 함께 보면 좋아요.