more work on test instance generation

This commit is contained in:
Grahame Grieve 2024-12-15 04:52:17 +11:00
parent d014b1f10a
commit 98966e4f08
2 changed files with 786 additions and 4 deletions

View File

@ -68,7 +68,7 @@ public class PackageVisitor {
public void alreadyVisited(String pid) throws FHIRException, IOException, EOperationOutcome;
}
private List<String> resourceTypes = new ArrayList<>();
private Set<String> resourceTypes = new HashSet<>();
private List<String> versions = new ArrayList<>();
private boolean corePackages;
private boolean oldVersions;
@ -79,16 +79,16 @@ public class PackageVisitor {
private String cache;
private int step;
public List<String> getResourceTypes() {
public Set<String> getResourceTypes() {
return resourceTypes;
}
public void setResourceTypes(List<String> resourceTypes) {
public void setResourceTypes(Set<String> resourceTypes) {
this.resourceTypes = resourceTypes;
}
public void setResourceTypes(String... resourceTypes) {
this.resourceTypes = new ArrayList<String>();
this.resourceTypes = new HashSet<String>();
for (String s : resourceTypes) {
this.resourceTypes.add(s);
}

View File

@ -0,0 +1,782 @@
package org.hl7.fhir.convertors.analytics;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.xml.parsers.ParserConfigurationException;
import org.hl7.fhir.convertors.analytics.PackageVisitor.IPackageVisitorProcessor;
import org.hl7.fhir.convertors.analytics.PackageVisitor.PackageContext;
import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.r5.context.IWorkerContext;
import org.hl7.fhir.r5.context.SimpleWorkerContext;
import org.hl7.fhir.r5.context.SimpleWorkerContext.SimpleWorkerContextBuilder;
import org.hl7.fhir.r5.elementmodel.Element;
import org.hl7.fhir.r5.elementmodel.Manager;
import org.hl7.fhir.r5.elementmodel.Manager.FhirFormat;
import org.hl7.fhir.r5.elementmodel.ValidatedFragment;
import org.hl7.fhir.r5.utils.EOperationOutcome;
import org.hl7.fhir.utilities.CommaSeparatedStringBuilder;
import org.hl7.fhir.utilities.StringPair;
import org.hl7.fhir.utilities.TextFile;
import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.VersionUtilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.http.ManagedWebAccess;
import org.hl7.fhir.utilities.http.ManagedWebAccess.WebAccessPolicy;
import org.hl7.fhir.utilities.npm.FilesystemPackageCacheManager;
import org.hl7.fhir.utilities.npm.NpmPackage;
import org.xml.sax.SAXException;
public class TestGenerationDataGenerator implements IPackageVisitorProcessor {
private static class Counter {
private int key;
private int count;
}
private Map<String, Set<String>> hashes = new HashMap<String, Set<String>>();
private Map<String, Counter> elements = new HashMap<String, Counter>();
private Map<String, Counter> types = new HashMap<String, Counter>();
private Map<String, IWorkerContext> contexts= new HashMap<>();
private Connection conn;
private PreparedStatement psqlE;
private PreparedStatement psqlT;
private PreparedStatement psqlV;
private int keyV = 0;
private int keyT = 0;
private int keyE = 0;
private PreparedStatement psqlEC;
private PreparedStatement psqlET;
@Override
public void alreadyVisited(String pid) {
}
@Override
public Object startPackage(PackageContext ctxt) {
return null;
}
@Override
public void processResource(PackageContext ctxt, Object context, String type, String id, byte[] content) throws FHIRException, IOException, EOperationOutcome {
String version = ctxt.getNpm().fhirVersion();
IWorkerContext worker = contexts.get(version);
if (worker == null) {
FilesystemPackageCacheManager pcm = new FilesystemPackageCacheManager.Builder().build();
NpmPackage npm = pcm.loadPackage(VersionUtilities.packageForVersion(version));
SimpleWorkerContext swc = new SimpleWorkerContextBuilder().withAllowLoadingDuplicates(true).fromPackage(npm);
contexts.put(version, swc);
worker = swc;
}
List<ValidatedFragment> res = Manager.parse(worker, new ByteArrayInputStream(content), FhirFormat.JSON);
if (res.size() > 0) {
try {
processElement(res.get(0).getElement());
} catch (SQLException e) {
throw new FHIRException(e);
}
}
}
private void processElement(Element element) throws SQLException {
String id = element.getProperty().getDefinition().getId();
switch (element.fhirType()) {
case "Address":
recordValue(id, "Address", getValues(element, "use", "type", "text", "line", "city", "district", "state", "postalCode", "country"));
break;
case "Age":
recordValue(id, "Age", getValues(element, "value", "comparator", "unit", "system", "code"));
break;
case "Annotation":
recordValue(id, "Annotation", getValues(element, "author", "time", "text"));
break;
case "Attachment":
recordValue(id, "Attachment", getValues(element, "contentType", "language", "data", "url", "size", "hash", "title"));
break;
case "CodeableConcept":
break;
case "CodeableReference":
break;
case "Coding":
recordValue(id, "Coding", getValues(element, "system", "version", "code", "display"));
break;
case "ContactPoint":
recordValue(id, "ContactPoint", getValues(element, "system", "value", "use", "rank"));
break;
case "Count":
recordValue(id, "Count", getValues(element, "value", "comparator", "unit", "system", "code"));
break;
case "Distance":
recordValue(id, "Distance", getValues(element, "value", "comparator", "unit", "system", "code"));
break;
case "Duration":
recordValue(id, "Duration", getValues(element, "value", "comparator", "unit", "system", "code"));
break;
case "HumanName":
recordValue(id, "Address", getValues(element, "use", "text", "family", "given", "prefix", "suffix"));
break;
case "Identifier":
recordValue(id, "Identifier", getValues(element, "use", "type", "system", "value"));
break;
case "Money":
recordValue(id, "Money", getValues(element, "value", "currency"));
break;
case "Period":
recordValue(id, "Period", getValues(element, "start", "end"));
break;
case "Quantity":
recordValue(id, "Quantity", getValues(element, "value", "comparator", "unit", "system", "code"));
break;
case "Range":
case "Ratio":
case "RatioRange":
case "Reference":
case "SampledData":
case "Signature":
case "Timing":
case "RelatedArtifact":
case "DataRequirement":
case "Expression":
break;
case "xhtml":
case "id":
case "canonical":
case "boolean":
case "code":
case "uri":
case "instant":
break;
default:
if (element.isPrimitive()) {
recordValue(id, element.fhirType(), element.primitiveValue());
} else {
for (Element child : element.getChildren()) {
if (!child.fhirType().equals("Extension") && !child.getPath().endsWith(".id") && !child.getPath().endsWith(".linkId")) {
if (!child.isResource() || !Utilities.existsInList(child.fhirType(), "Bundle", "CapabilityStatement", "CodeSystem", "ConceptMap", "GraphDefinition", "ImplementationGuide", "MessageHeader", "NamingSystem", "OperationDefinition", "OperationOutcome", "Parameters", "SearchParameter", "StructureDefinition", "StructureMap", "TerminologyCapabilities", "ValueSet")) {
processElement(child);
}
}
}
}
}
}
private String[] getValues(Element element, String... names) {
List<String> values = new ArrayList<>();
for (String name : names) {
List<Element> children = element.getChildren(name);
if (!children.isEmpty()) {
CommaSeparatedStringBuilder b = new CommaSeparatedStringBuilder("~");
for (Element child : children) {
if (child.hasPrimitiveValue()) {
b.append(child.primitiveValue());
}
}
if (b.length() > 0) {
values.add(name+":"+b.toString());
}
}
}
return values.toArray(new String[0]);
}
public void start(String filename) throws SQLException, IOException {
ManagedFileAccess.file(filename).delete();
conn = DriverManager.getConnection("jdbc:sqlite:"+filename);
Statement stmt = conn.createStatement();
stmt.execute("CREATE TABLE TestElements (ElementKey int NOT NULL, ElementId nvarchar NOT NULL, Count int NULL, PRIMARY KEY (ElementKey))");
stmt.execute("CREATE INDEX TestElementsElement ON TestElements ( ElementId )");
stmt.execute("CREATE TABLE TestTypes (TypeKey int NOT NULL, TypeName nvarchar NOT NULL, Count int NULL, PRIMARY KEY (TypeKey))");
stmt.execute("CREATE INDEX TestTypesType ON TestTypes ( TypeName )");
stmt.execute("CREATE TABLE TestValues (ValueKey int NOT NULL, ElementKey int NOT NULL, TypeKey int NOT NULL, ValueData nvarchar NOT NULL, PRIMARY KEY (ValueKey))");
stmt.execute("CREATE INDEX TestValueElement ON TestValues ( ElementKey, TypeKey)");
psqlE = conn.prepareStatement("Insert into TestElements (ElementKey, ElementId) values (?, ?)");
psqlT = conn.prepareStatement("Insert into TestTypes (TypeKey, TypeName) values (?, ?)");
psqlV = conn.prepareStatement("Insert into TestValues (ValueKey, ElementKey, TypeKey, ValueData) values (?, ?, ?, ?)");
psqlEC = conn.prepareStatement("Update TestElements set Count = ? where ElementKey = ?");
psqlET = conn.prepareStatement("Update TestTypes set Count = ? where TypeKey = ?");
}
private void store(String path, String type, String[] values) throws SQLException {
Counter cE = elements.get(path);
if (cE != null) {
cE.count++;
psqlEC.setInt(1, cE.count);
psqlEC.setInt(2, cE.key);
psqlEC.execute();
} else {
keyE++;
cE = new Counter();
cE.key = keyE;
cE.count = 1;
elements.put(path, cE);
psqlE.setInt(1, cE.key);
psqlE.setString(2, path);
psqlE.execute();
}
Counter cT = types.get(type);
if (cT != null) {
cT.count++;
psqlET.setInt(1, cT.count);
psqlET.setInt(2, cT.key);
psqlET.execute();
} else {
keyT++;
cT = new Counter();
cT.key = keyT;
cT.count = 1;
types.put(type, cT);
psqlT.setInt(1, cT.key);
psqlT.setString(2, type);
psqlT.execute();
}
psqlV.setInt(1, keyE++);
psqlV.setInt(2, cE.key);
psqlV.setInt(3, cT.key);
psqlV.setString(4, CommaSeparatedStringBuilder.join("|:|",values));
psqlV.execute();
}
private void recordValue(String path, String type, String... values) throws SQLException {
StringBuilder v = new StringBuilder();
v.append(type);
v.append("|");
for (String s : values) {
v.append(s);
v.append("|");
}
Set<String> hashset = hashes.get(path);
if (hashset == null) {
hashset = new HashSet<String>();
hashes.put(path, hashset);
}
String s= v.toString();
if (!hashset.contains(s)) {
hashset.add(s);
store(path, type, values);
}
}
@Override
public void finishPackage(PackageContext ctxt) {
}
public static void main(String[] args) throws Exception {
new TestGenerationDataGenerator().execute();
// new TestGenerationDataGenerator().offAirWExecute();
}
private void offAirWExecute() throws FHIRException, IOException, EOperationOutcome, SQLException {
ManagedWebAccess.setAccessPolicy(WebAccessPolicy.PROHIBITED);
start("/Users/grahamegrieve/temp/testdata.db");
FilesystemPackageCacheManager pcm = new FilesystemPackageCacheManager.Builder().build();
System.out.println("Processing");
for (String pid : pcm.listPackages()) {
System.out.println(pid);
NpmPackage npm = pcm.loadPackage(pid);
try {
processPackage(npm);
} catch (Exception e) {
System.out.println(" "+e.getMessage());
}
}
System.out.print("Done");
}
private void processPackage(NpmPackage npm) throws IOException, FHIRException, EOperationOutcome {
String fv = npm.fhirVersion();
String v = npm.version();
PackageContext ctxt = new PackageContext(npm.name()+"#"+v, npm, fv);
boolean ok = false;
Object context = null;
context = startPackage(ctxt);
ok = true;
if (ok) {
int c = 0;
Set<String> resourceTypes = new HashSet<String>();
addR5ResourceNames(resourceTypes);
addR4ResourceNames(resourceTypes);
addR3ResourceNames(resourceTypes);
for (String type : resourceTypes) {
List<String> rt = new ArrayList<String>();
rt.add(type);
for (StringPair s : npm.listAllResources(rt)) {
c++;
processResource(ctxt, context, type, s.getName(), TextFile.streamToBytes(npm.load(s.getName(), s.getValue())));
}
}
}
finishPackage(ctxt);
}
private void execute() throws IOException, ParserConfigurationException, SAXException, FHIRException, EOperationOutcome, SQLException {
start("/Users/grahamegrieve/temp/testdata.db");
PackageVisitor pv = new PackageVisitor();
addR5ResourceNames(pv.getResourceTypes());
addR4ResourceNames(pv.getResourceTypes());
addR3ResourceNames(pv.getResourceTypes());
pv.setOldVersions(false);
pv.setCorePackages(true);
pv.setProcessor(this);
pv.visitPackages();
System.out.println("Done");
}
private void addR5ResourceNames(Set<String> set) {
set.add("Account");
set.add("ActivityDefinition");
set.add("ActorDefinition");
set.add("AdministrableProductDefinition");
set.add("AdverseEvent");
set.add("AllergyIntolerance");
set.add("Appointment");
set.add("AppointmentResponse");
set.add("ArtifactAssessment");
set.add("AuditEvent");
set.add("Basic");
// set.add("Binary");
set.add("BiologicallyDerivedProduct");
set.add("BiologicallyDerivedProductDispense");
set.add("BodyStructure");
// set.add("Bundle");
// set.add("CapabilityStatement");
set.add("CarePlan");
set.add("CareTeam");
set.add("ChargeItem");
set.add("ChargeItemDefinition");
set.add("Citation");
set.add("Claim");
set.add("ClaimResponse");
set.add("ClinicalImpression");
set.add("ClinicalUseDefinition");
// set.add("CodeSystem");
set.add("Communication");
set.add("CommunicationRequest");
set.add("CompartmentDefinition");
set.add("Composition");
// set.add("ConceptMap");
set.add("Condition");
set.add("ConditionDefinition");
set.add("Consent");
set.add("Contract");
set.add("Coverage");
set.add("CoverageEligibilityRequest");
set.add("CoverageEligibilityResponse");
set.add("DetectedIssue");
set.add("Device");
set.add("DeviceAssociation");
set.add("DeviceDefinition");
set.add("DeviceDispense");
set.add("DeviceMetric");
set.add("DeviceRequest");
set.add("DeviceUsage");
set.add("DiagnosticReport");
set.add("DocumentReference");
set.add("Encounter");
set.add("EncounterHistory");
set.add("Endpoint");
set.add("EnrollmentRequest");
set.add("EnrollmentResponse");
set.add("EpisodeOfCare");
set.add("EventDefinition");
set.add("Evidence");
set.add("EvidenceReport");
set.add("EvidenceVariable");
set.add("ExampleScenario");
set.add("ExplanationOfBenefit");
set.add("FamilyMemberHistory");
set.add("Flag");
set.add("FormularyItem");
set.add("GenomicStudy");
set.add("Goal");
// set.add("GraphDefinition");
set.add("Group");
set.add("GuidanceResponse");
set.add("HealthcareService");
set.add("ImagingSelection");
set.add("ImagingStudy");
set.add("Immunization");
set.add("ImmunizationEvaluation");
set.add("ImmunizationRecommendation");
// set.add("ImplementationGuide");
set.add("Ingredient");
set.add("InsurancePlan");
set.add("InventoryItem");
set.add("InventoryReport");
set.add("Invoice");
set.add("Library");
set.add("Linkage");
set.add("List");
set.add("Location");
set.add("ManufacturedItemDefinition");
set.add("Measure");
set.add("MeasureReport");
set.add("Medication");
set.add("MedicationAdministration");
set.add("MedicationDispense");
set.add("MedicationKnowledge");
set.add("MedicationRequest");
set.add("MedicationStatement");
set.add("MedicinalProductDefinition");
set.add("MessageDefinition");
// set.add("MessageHeader");
set.add("MolecularSequence");
// set.add("NamingSystem");
set.add("NutritionIntake");
set.add("NutritionOrder");
set.add("NutritionProduct");
set.add("Observation");
set.add("ObservationDefinition");
// set.add("OperationDefinition");
// set.add("OperationOutcome");
set.add("Organization");
set.add("OrganizationAffiliation");
set.add("PackagedProductDefinition");
// set.add("Parameters");
set.add("Patient");
set.add("PaymentNotice");
set.add("PaymentReconciliation");
set.add("Permission");
set.add("Person");
set.add("PlanDefinition");
set.add("Practitioner");
set.add("PractitionerRole");
set.add("Procedure");
set.add("Provenance");
set.add("Questionnaire");
set.add("QuestionnaireResponse");
set.add("RegulatedAuthorization");
set.add("RelatedPerson");
set.add("RequestOrchestration");
set.add("Requirements");
set.add("ResearchStudy");
set.add("ResearchSubject");
set.add("RiskAssessment");
set.add("Schedule");
// set.add("SearchParameter");
set.add("ServiceRequest");
set.add("Slot");
set.add("Specimen");
set.add("SpecimenDefinition");
// set.add("StructureDefinition");
// set.add("StructureMap");
set.add("Subscription");
set.add("SubscriptionStatus");
set.add("SubscriptionTopic");
set.add("Substance");
set.add("SubstanceDefinition");
set.add("SubstanceNucleicAcid");
set.add("SubstancePolymer");
set.add("SubstanceProtein");
set.add("SubstanceReferenceInformation");
set.add("SubstanceSourceMaterial");
set.add("SupplyDelivery");
set.add("SupplyRequest");
set.add("Task");
// set.add("TerminologyCapabilities");
set.add("TestPlan");
set.add("TestReport");
set.add("TestScript");
set.add("Transport");
// set.add("ValueSet");
set.add("VerificationResult");
set.add("VisionPrescription");
}
private void addR4ResourceNames(Set<String> set) {
set.add("Account");
set.add("ActivityDefinition");
set.add("AdverseEvent");
set.add("AllergyIntolerance");
set.add("Appointment");
set.add("AppointmentResponse");
set.add("AuditEvent");
set.add("Basic");
// set.add("Binary");
set.add("BiologicallyDerivedProduct");
set.add("BodyStructure");
// set.add("Bundle");
// set.add("CapabilityStatement");
set.add("CarePlan");
set.add("CareTeam");
set.add("CatalogEntry");
set.add("ChargeItem");
set.add("ChargeItemDefinition");
set.add("Claim");
set.add("ClaimResponse");
set.add("ClinicalImpression");
// set.add("CodeSystem");
set.add("Communication");
set.add("CommunicationRequest");
set.add("CompartmentDefinition");
set.add("Composition");
// set.add("ConceptMap");
set.add("Condition");
set.add("Consent");
set.add("Contract");
set.add("Coverage");
set.add("CoverageEligibilityRequest");
set.add("CoverageEligibilityResponse");
set.add("DetectedIssue");
set.add("Device");
set.add("DeviceDefinition");
set.add("DeviceMetric");
set.add("DeviceRequest");
set.add("DeviceUseStatement");
set.add("DiagnosticReport");
set.add("DocumentManifest");
set.add("DocumentReference");
set.add("EffectEvidenceSynthesis");
set.add("Encounter");
set.add("Endpoint");
set.add("EnrollmentRequest");
set.add("EnrollmentResponse");
set.add("EpisodeOfCare");
set.add("EventDefinition");
set.add("Evidence");
set.add("EvidenceVariable");
set.add("ExampleScenario");
set.add("ExplanationOfBenefit");
set.add("FamilyMemberHistory");
set.add("Flag");
set.add("Goal");
// set.add("GraphDefinition");
set.add("Group");
set.add("GuidanceResponse");
set.add("HealthcareService");
set.add("ImagingStudy");
set.add("Immunization");
set.add("ImmunizationEvaluation");
set.add("ImmunizationRecommendation");
// set.add("ImplementationGuide");
set.add("InsurancePlan");
set.add("Invoice");
set.add("Library");
set.add("Linkage");
set.add("List");
set.add("Location");
set.add("Measure");
set.add("MeasureReport");
set.add("Media");
set.add("Medication");
set.add("MedicationAdministration");
set.add("MedicationDispense");
set.add("MedicationKnowledge");
set.add("MedicationRequest");
set.add("MedicationStatement");
set.add("MedicinalProduct");
set.add("MedicinalProductAuthorization");
set.add("MedicinalProductContraindication");
set.add("MedicinalProductIndication");
set.add("MedicinalProductIngredient");
set.add("MedicinalProductInteraction");
set.add("MedicinalProductManufactured");
set.add("MedicinalProductPackaged");
set.add("MedicinalProductPharmaceutical");
set.add("MedicinalProductUndesirableEffect");
set.add("MessageDefinition");
// set.add("MessageHeader");
set.add("MolecularSequence");
// set.add("NamingSystem");
set.add("NutritionOrder");
set.add("Observation");
set.add("ObservationDefinition");
// set.add("OperationDefinition");
// set.add("OperationOutcome");
set.add("Organization");
set.add("OrganizationAffiliation");
// set.add("Parameters");
set.add("Patient");
set.add("PaymentNotice");
set.add("PaymentReconciliation");
set.add("Person");
set.add("PlanDefinition");
set.add("Practitioner");
set.add("PractitionerRole");
set.add("Procedure");
set.add("Provenance");
set.add("Questionnaire");
set.add("QuestionnaireResponse");
set.add("RelatedPerson");
set.add("RequestGroup");
set.add("ResearchDefinition");
set.add("ResearchElementDefinition");
set.add("ResearchStudy");
set.add("ResearchSubject");
set.add("RiskAssessment");
set.add("RiskEvidenceSynthesis");
set.add("Schedule");
// set.add("SearchParameter");
set.add("ServiceRequest");
set.add("Slot");
set.add("Specimen");
set.add("SpecimenDefinition");
// set.add("StructureDefinition");
// set.add("StructureMap");
set.add("Subscription");
set.add("Substance");
set.add("SubstancePolymer");
set.add("SubstanceProtein");
set.add("SubstanceReferenceInformation");
set.add("SubstanceSpecification");
set.add("SubstanceSourceMaterial");
set.add("SupplyDelivery");
set.add("SupplyRequest");
set.add("Task");
set.add("TerminologyCapabilities");
set.add("TestReport");
set.add("TestScript");
// set.add("ValueSet");
set.add("VerificationResult");
set.add("VisionPrescription");
}
private void addR3ResourceNames(Set<String> set) {
set.add("Account");
set.add("ActivityDefinition");
set.add("AllergyIntolerance");
set.add("AdverseEvent");
set.add("Appointment");
set.add("AppointmentResponse");
set.add("AuditEvent");
set.add("Basic");
// set.add("Binary");
set.add("BodySite");
// set.add("Bundle");
// set.add("CapabilityStatement");
set.add("CarePlan");
set.add("CareTeam");
set.add("ChargeItem");
set.add("Claim");
set.add("ClaimResponse");
set.add("ClinicalImpression");
// set.add("CodeSystem");
set.add("Communication");
set.add("CommunicationRequest");
set.add("CompartmentDefinition");
set.add("Composition");
// set.add("ConceptMap");
set.add("Condition");
set.add("Consent");
set.add("Contract");
set.add("Coverage");
set.add("DataElement");
set.add("DetectedIssue");
set.add("Device");
set.add("DeviceComponent");
set.add("DeviceMetric");
set.add("DeviceRequest");
set.add("DeviceUseStatement");
set.add("DiagnosticReport");
set.add("DocumentManifest");
set.add("DocumentReference");
set.add("EligibilityRequest");
set.add("EligibilityResponse");
set.add("Encounter");
set.add("Endpoint");
set.add("EnrollmentRequest");
set.add("EnrollmentResponse");
set.add("EpisodeOfCare");
set.add("ExpansionProfile");
set.add("ExplanationOfBenefit");
set.add("FamilyMemberHistory");
set.add("Flag");
set.add("Goal");
// set.add("GraphDefinition");
set.add("Group");
set.add("GuidanceResponse");
set.add("HealthcareService");
set.add("ImagingManifest");
set.add("ImagingStudy");
set.add("Immunization");
set.add("ImmunizationRecommendation");
// set.add("ImplementationGuide");
set.add("Library");
set.add("Linkage");
set.add("List");
set.add("Location");
set.add("Measure");
set.add("MeasureReport");
set.add("Media");
set.add("Medication");
set.add("MedicationAdministration");
set.add("MedicationDispense");
set.add("MedicationRequest");
set.add("MedicationStatement");
set.add("MessageDefinition");
// set.add("MessageHeader");
// set.add("NamingSystem");
set.add("NutritionOrder");
set.add("Observation");
// set.add("OperationDefinition");
// set.add("OperationOutcome");
set.add("Organization");
// set.add("Parameters");
set.add("Patient");
set.add("PaymentNotice");
set.add("PaymentReconciliation");
set.add("Person");
set.add("PlanDefinition");
set.add("Practitioner");
set.add("PractitionerRole");
set.add("Procedure");
set.add("ProcedureRequest");
set.add("ProcessRequest");
set.add("ProcessResponse");
set.add("Provenance");
set.add("Questionnaire");
set.add("QuestionnaireResponse");
set.add("ReferralRequest");
set.add("RelatedPerson");
set.add("RequestGroup");
set.add("ResearchStudy");
set.add("ResearchSubject");
set.add("RiskAssessment");
set.add("Schedule");
// set.add("SearchParameter");
set.add("Sequence");
set.add("ServiceDefinition");
set.add("Slot");
set.add("Specimen");
// set.add("StructureDefinition");
// set.add("StructureMap");
set.add("Subscription");
set.add("Substance");
set.add("SupplyDelivery");
set.add("SupplyRequest");
set.add("Task");
set.add("TestScript");
set.add("TestReport");
// set.add("ValueSet");
set.add("VisionPrescription");
}
}