2016-09-02 5 views
0

StructureDefinition에서 코드를 생성 할 때 수퍼 클래스로 base에서 참조되는 리소스의 클래스를 사용하는 것이 분명합니다.다른 리소스를 확장하는 리소스를 처리하는 방법

(max="0"max="*" 의해 재정의되는 경우 String에서 List<String> 예에 해당) base 자원의 특성의 종류를 변경할 수있는 다른 자원에 기초한 자원.

하위 클래스가 수퍼 클래스의 인터페이스를 준수해야하기 때문에 강력하게 형식화 된 언어로 구분됩니다 (일반화 할 수는 있지만 전문화 할 수는 없지만).

그 문제를 해결하기위한 올바른 전략은 무엇입니까?

differential 대신 snapshot을 사용할 수 있으며 base 리소스의 클래스를 확장 할 수 없습니다.

나는 아직도 Element, BackboneElement, Resource, DomainResource 같은 일반적인 슈퍼 클래스 중 하나를 확장해야 하는가?

내 추론에 결함이 있습니까?

답변

1

리소스는 다른 리소스를 "확장"할 수 없습니다. 기본 리소스에 1..1 요소의 카디널리티가있는 경우 파생 모델은 하위 카디널리티를 1 아래로, 상위 카디널리티를 1 이상으로 변경할 수 없습니다.

리소스를 "확장하는"기본 방법은 다음과 같습니다. 0으로 정의 된 "확장"요소를 사용합니다. * 기본 리소스의 거의 모든 곳. 따라서 기술적으로 프로필을 만들 때 핵심 요소를 강화하거나 "확장"요소의 반복 중 적어도 일부에 대한 기대치를 제한하는 것이 항상 제약입니다.

당신은 허용 카디에 대한 자세한 내용은 설명을위한 here

+0

큰 감사를 변경하실 수 있습니다. 그래서 이것은'base'를 수퍼 클래스로 사용하고'differential' (또한 확장을 적용)에서 서브 클래스를 생성하는 것이 안전해야한다는 것을 의미합니까? –

+0

프로파일 링에 대해 이야기 할 때 하위 클래스의 전체 개념은 약간 까다 롭습니다. 반복되는 항목을 5 가지 다른 제약 조건 집합으로 슬라이스하면 어떻게 하위 클래스에서이를 볼 수있게할까요? 그것은 5 요소입니까? 그것은 여전히 ​​하나의 반복되는 요소입니까? 동일한 컬렉션에 대해 서로 다른 두 가지 관점이 있습니까? 우리는 아직 프로파일을 클래스로 표현하는 최선의 방법에 대해 완전히 머리를 감싸지 않았습니다. –

+0

감사합니다. 아직 슬라이스가 정확히 무엇인지 내 머리를 감싸고 있습니다. 더 많은 예제를 보여주는 문서가 있습니까? 내가 찾은 대부분의 것들은 매우 추상적이어서 너무 자세하게 설명하지 않습니다. 문서는 사실을 확인하는 데는 좋지만 아직 익숙하지 않은 개념을 머리로 감싸려고하면 매우 어렵습니다. 또한 FHIR 커뮤니티가 온라인으로 토론하는 곳이 있습니까? 모든 종류의 질문이 그렇게 적합한 것은 아닙니다. –