revise draft
This commit is contained in:
parent
b6d35314f6
commit
96810c984b
|
@ -110,6 +110,7 @@ import org.hl7.fhir.r5.model.Bundle.HTTPVerb;
|
||||||
import org.hl7.fhir.r5.model.ValueSet.ConceptSetComponent;
|
import org.hl7.fhir.r5.model.ValueSet.ConceptSetComponent;
|
||||||
import org.hl7.fhir.r5.model.ValueSet.ValueSetComposeComponent;
|
import org.hl7.fhir.r5.model.ValueSet.ValueSetComposeComponent;
|
||||||
import org.hl7.fhir.r5.profilemodel.ProfiledElement;
|
import org.hl7.fhir.r5.profilemodel.ProfiledElement;
|
||||||
|
import org.hl7.fhir.r5.profilemodel.ProfiledElementBuilder;
|
||||||
import org.hl7.fhir.r5.renderers.OperationOutcomeRenderer;
|
import org.hl7.fhir.r5.renderers.OperationOutcomeRenderer;
|
||||||
import org.hl7.fhir.r5.terminologies.CodeSystemUtilities;
|
import org.hl7.fhir.r5.terminologies.CodeSystemUtilities;
|
||||||
import org.hl7.fhir.r5.terminologies.TerminologyClient;
|
import org.hl7.fhir.r5.terminologies.TerminologyClient;
|
||||||
|
@ -2394,4 +2395,11 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
||||||
this.packageTracker = packageTracker;
|
this.packageTracker = packageTracker;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ProfiledElementBuilder getProfiledElementBuilder() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return new ProfiledElementBuilder(this);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -66,6 +66,7 @@ import org.hl7.fhir.r5.model.StructureMap;
|
||||||
import org.hl7.fhir.r5.model.ValueSet;
|
import org.hl7.fhir.r5.model.ValueSet;
|
||||||
import org.hl7.fhir.r5.model.ValueSet.ConceptSetComponent;
|
import org.hl7.fhir.r5.model.ValueSet.ConceptSetComponent;
|
||||||
import org.hl7.fhir.r5.profilemodel.ProfiledElement;
|
import org.hl7.fhir.r5.profilemodel.ProfiledElement;
|
||||||
|
import org.hl7.fhir.r5.profilemodel.ProfiledElementBuilder;
|
||||||
import org.hl7.fhir.r5.terminologies.ValueSetExpander.TerminologyServiceErrorClass;
|
import org.hl7.fhir.r5.terminologies.ValueSetExpander.TerminologyServiceErrorClass;
|
||||||
import org.hl7.fhir.r5.terminologies.ValueSetExpander.ValueSetExpansionOutcome;
|
import org.hl7.fhir.r5.terminologies.ValueSetExpander.ValueSetExpansionOutcome;
|
||||||
import org.hl7.fhir.r5.utils.validation.IResourceValidator;
|
import org.hl7.fhir.r5.utils.validation.IResourceValidator;
|
||||||
|
@ -802,84 +803,6 @@ public interface IWorkerContext {
|
||||||
|
|
||||||
public String getSpecUrl();
|
public String getSpecUrl();
|
||||||
|
|
||||||
/**
|
public ProfiledElementBuilder getProfiledElementBuilder();
|
||||||
* Given a profile, return a tree of elements in the profile model. This builds the profile model
|
|
||||||
* for the latest version of the nominated profile
|
|
||||||
*
|
|
||||||
* THe tree of elements in the profile model is different to the the base resource:
|
|
||||||
* - some elements are removed (max = 0)
|
|
||||||
* - extensions are turned into named elements
|
|
||||||
* - slices are turned into named elements
|
|
||||||
* - element properties - doco, cardinality, binding etc is updated for what the profile says
|
|
||||||
*
|
|
||||||
* When built with this method, the profile element can't have instance data
|
|
||||||
*
|
|
||||||
* Warning: profiles and resources can be recursive; you can't iterate this tree until it you get
|
|
||||||
* to the leaves because you will never get to a child that doesn't have children
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public ProfiledElement buildProfileElement(String url);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Given a profile, return a tree of elements in the profile model. This builds the profile model
|
|
||||||
* for the nominated version of the nominated profile
|
|
||||||
*
|
|
||||||
* THe tree of elements in the profile model is different to the the base resource:
|
|
||||||
* - some elements are removed (max = 0)
|
|
||||||
* - extensions are turned into named elements
|
|
||||||
* - slices are turned into named elements
|
|
||||||
* - element properties - doco, cardinality, binding etc is updated for what the profile says
|
|
||||||
*
|
|
||||||
* When built with this method, the profile element can't have instance data
|
|
||||||
*
|
|
||||||
* Warning: profiles and resources can be recursive; you can't iterate this tree until it you get
|
|
||||||
* to the leaves because you will never get to a child that doesn't have children
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public ProfiledElement buildProfileElement(String url, String version);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Given a profile, return a tree of elements in the profile model with matching instance data.
|
|
||||||
* This builds the profile model for the latest version of the nominated profile and matches
|
|
||||||
* the data in the resource against the profile. Data can be added or read from the profile element
|
|
||||||
*
|
|
||||||
* THe tree of elements in the profile model is different to the the base resource:
|
|
||||||
* - some elements are removed (max = 0)
|
|
||||||
* - extensions are turned into named elements
|
|
||||||
* - slices are turned into named elements
|
|
||||||
* - element properties - doco, cardinality, binding etc is updated for what the profile says
|
|
||||||
*
|
|
||||||
* When built with this method, the profile element can't have instance data
|
|
||||||
*
|
|
||||||
* Warning: profiles and resources can be recursive; you can't iterate this tree until it you get
|
|
||||||
* to the leaves because you will never get to a child that doesn't have children
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public ProfiledElement buildProfileElement(String url, Resource resource);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Given a profile, return a tree of elements in the profile model with matching instance data.
|
|
||||||
* This builds the profile model for the nominated version of the nominated profile and matches
|
|
||||||
* the data in the resource against the profile. Data can be added or read from the profile element
|
|
||||||
*
|
|
||||||
* THe tree of elements in the profile model is different to the the base resource:
|
|
||||||
* - some elements are removed (max = 0)
|
|
||||||
* - extensions are turned into named elements
|
|
||||||
* - slices are turned into named elements
|
|
||||||
* - element properties - doco, cardinality, binding etc is updated for what the profile says
|
|
||||||
*
|
|
||||||
* When built with this method, the profile element can't have instance data
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public ProfiledElement buildProfileElement(String url, String version, Resource resource);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Given a profile, construct an empty resource of the type being profiled (to use as input
|
|
||||||
* to the buildProfileElement method
|
|
||||||
*
|
|
||||||
* No version, because the version doesn't change the type of the resource
|
|
||||||
*/
|
|
||||||
public Resource makeProfileBase(String url);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -68,6 +68,7 @@ import org.hl7.fhir.r5.model.StructureDefinition.TypeDerivationRule;
|
||||||
import org.hl7.fhir.r5.model.StructureMap.StructureMapModelMode;
|
import org.hl7.fhir.r5.model.StructureMap.StructureMapModelMode;
|
||||||
import org.hl7.fhir.r5.model.StructureMap.StructureMapStructureComponent;
|
import org.hl7.fhir.r5.model.StructureMap.StructureMapStructureComponent;
|
||||||
import org.hl7.fhir.r5.profilemodel.ProfiledElement;
|
import org.hl7.fhir.r5.profilemodel.ProfiledElement;
|
||||||
|
import org.hl7.fhir.r5.profilemodel.ProfiledElementBuilder;
|
||||||
import org.hl7.fhir.r5.terminologies.CodeSystemUtilities;
|
import org.hl7.fhir.r5.terminologies.CodeSystemUtilities;
|
||||||
import org.hl7.fhir.r5.terminologies.JurisdictionUtilities;
|
import org.hl7.fhir.r5.terminologies.JurisdictionUtilities;
|
||||||
import org.hl7.fhir.r5.terminologies.TerminologyClient;
|
import org.hl7.fhir.r5.terminologies.TerminologyClient;
|
||||||
|
@ -762,36 +763,5 @@ public class SimpleWorkerContext extends BaseWorkerContext implements IWorkerCon
|
||||||
return VersionUtilities.getSpecUrl(getVersion())+"/";
|
return VersionUtilities.getSpecUrl(getVersion())+"/";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ProfiledElement buildProfileElement(String url) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ProfiledElement buildProfileElement(String url, String version) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ProfiledElement buildProfileElement(String url, Resource resource) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ProfiledElement buildProfileElement(String url, String version, Resource resource) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Resource makeProfileBase(String url) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,107 @@
|
||||||
|
package org.hl7.fhir.r5.profilemodel;
|
||||||
|
|
||||||
|
import org.hl7.fhir.r5.context.IWorkerContext;
|
||||||
|
import org.hl7.fhir.r5.model.Resource;
|
||||||
|
|
||||||
|
import kotlin.NotImplementedError;
|
||||||
|
|
||||||
|
public class ProfiledElementBuilder {
|
||||||
|
|
||||||
|
private IWorkerContext context;
|
||||||
|
|
||||||
|
public ProfiledElementBuilder(IWorkerContext context) {
|
||||||
|
super();
|
||||||
|
this.context = context;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Given a profile, return a tree of elements in the profile model. This builds the profile model
|
||||||
|
* for the latest version of the nominated profile
|
||||||
|
*
|
||||||
|
* THe tree of elements in the profile model is different to the the base resource:
|
||||||
|
* - some elements are removed (max = 0)
|
||||||
|
* - extensions are turned into named elements
|
||||||
|
* - slices are turned into named elements
|
||||||
|
* - element properties - doco, cardinality, binding etc is updated for what the profile says
|
||||||
|
*
|
||||||
|
* When built with this method, the profile element can't have instance data
|
||||||
|
*
|
||||||
|
* Warning: profiles and resources can be recursive; you can't iterate this tree until it you get
|
||||||
|
* to the leaves because you will never get to a child that doesn't have children
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public ProfiledElement buildProfileElement(String url) {
|
||||||
|
throw new NotImplementedError("NOt done yet");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Given a profile, return a tree of elements in the profile model. This builds the profile model
|
||||||
|
* for the nominated version of the nominated profile
|
||||||
|
*
|
||||||
|
* THe tree of elements in the profile model is different to the the base resource:
|
||||||
|
* - some elements are removed (max = 0)
|
||||||
|
* - extensions are turned into named elements
|
||||||
|
* - slices are turned into named elements
|
||||||
|
* - element properties - doco, cardinality, binding etc is updated for what the profile says
|
||||||
|
*
|
||||||
|
* When built with this method, the profile element can't have instance data
|
||||||
|
*
|
||||||
|
* Warning: profiles and resources can be recursive; you can't iterate this tree until it you get
|
||||||
|
* to the leaves because you will never get to a child that doesn't have children
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public ProfiledElement buildProfileElement(String url, String version) {
|
||||||
|
throw new NotImplementedError("NOt done yet");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Given a profile, return a tree of elements in the profile model with matching instance data.
|
||||||
|
* This builds the profile model for the latest version of the nominated profile and matches
|
||||||
|
* the data in the resource against the profile. Data can be added or read from the profile element
|
||||||
|
*
|
||||||
|
* THe tree of elements in the profile model is different to the the base resource:
|
||||||
|
* - some elements are removed (max = 0)
|
||||||
|
* - extensions are turned into named elements
|
||||||
|
* - slices are turned into named elements
|
||||||
|
* - element properties - doco, cardinality, binding etc is updated for what the profile says
|
||||||
|
*
|
||||||
|
* When built with this method, the profile element can't have instance data
|
||||||
|
*
|
||||||
|
* Warning: profiles and resources can be recursive; you can't iterate this tree until it you get
|
||||||
|
* to the leaves because you will never get to a child that doesn't have children
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public ProfiledElement buildProfileElement(String url, Resource resource) {
|
||||||
|
throw new NotImplementedError("NOt done yet");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Given a profile, return a tree of elements in the profile model with matching instance data.
|
||||||
|
* This builds the profile model for the nominated version of the nominated profile and matches
|
||||||
|
* the data in the resource against the profile. Data can be added or read from the profile element
|
||||||
|
*
|
||||||
|
* THe tree of elements in the profile model is different to the the base resource:
|
||||||
|
* - some elements are removed (max = 0)
|
||||||
|
* - extensions are turned into named elements
|
||||||
|
* - slices are turned into named elements
|
||||||
|
* - element properties - doco, cardinality, binding etc is updated for what the profile says
|
||||||
|
*
|
||||||
|
* When built with this method, the profile element can't have instance data
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public ProfiledElement buildProfileElement(String url, String version, Resource resource) {
|
||||||
|
throw new NotImplementedError("NOt done yet");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Given a profile, construct an empty resource of the type being profiled (to use as input
|
||||||
|
* to the buildProfileElement method
|
||||||
|
*
|
||||||
|
* No version, because the version doesn't change the type of the resource
|
||||||
|
*/
|
||||||
|
public Resource makeProfileBase(String url) {
|
||||||
|
throw new NotImplementedError("NOt done yet");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue