Stream: implementers
Topic: Creating a master profile set
Sadiq Saleh (Apr 12 2017 at 17:36):
@Michel Rutten with the impending release of the Forge tool for STU3.0 we are looking to move from our current method of authoring using spreadsheets, to using Forge.
However we want to create a "master" set of profiles, with derived profiles for each. Spefically our use case is:
1) Create a "Master" cancer set of profiles
2) For each cancer type use (a subset of) derived profiles AND/OR limit valuesets for each master profile
How would this work with Forge?
Is it feasible to make a change to the master profile and have it automatically propogate to all the children?
Would references between profiles update?
Sadiq Saleh (Apr 12 2017 at 17:41):
@Eric Haas I know you have quite a bit of experience with this for the vital signs profiles. Do you have any suggestions?
Eric Haas (Apr 12 2017 at 17:43):
yes if the profile is based upon another
Eric Haas (Apr 12 2017 at 17:44):
by automatic I mean you have to rerun the build for the changes to take place
Sadiq Saleh (Apr 12 2017 at 17:50):
Do you have to go into each derived profile and make the changes? For example if I have:
Master profiles: Tumor size (profile on Observation) references Cancer instance (profile on condition)
and I want to create cancer specific instances:
Breast cancer profiles: Tumor size BRCA reference BRCA instance
Kidney cancer profiles: Tumor size KDNC references KDNC instance
Would I have to go into each derived profile and update the references?
What if I change the Cancer Instance to instead be a profile on some other resource, would this propogate through?
Eric Haas (Apr 12 2017 at 19:54):
I think what you mean is a dependency list that is defined in the defintions files and described here
Eric Haas (Apr 12 2017 at 19:54):
specifically this part:
Eric Haas (Apr 12 2017 at 19:54):
"dependencyList": [
// a list of other implementation guides that this guide depends on
// e.g. uses profiles, value sets, code systems etc
// zero or more of this object:
{
"name" : "[name of the IG, for logging, and Jekyll variable name for location]",
"location" : "[http address where the IG lives]",
"source" : "[folder to get the definitions from if running ahead of publication at location (relative)]"
}
],
Eric Haas (Apr 12 2017 at 19:56):
so anything that is changed there will propagate through the child profiles.
Sadiq Saleh (Apr 12 2017 at 20:56):
That makes sense. However I still don't understand how the references will be updated without requiring the author to go in and manage them individually.
Even with this approach, if the master has observation REF condition, then as far as I understand it the author would have to make sure that in the breast cancer IG there is a Observation-BRCA REF Condition-BRCA and for Kidney cancer Observation-KDNC REF Condition-KDNC
Is this correct?
Eric Haas (Apr 12 2017 at 23:52):
I am a little lost in what you are trying to do. ...
- "In the breast cancer IG there is a Observation-BRCA REF Condition-BRCA " if the breast cancer IG defines those two profiles then any changes to those profiles are managed in that IG.
- IF the "observation REF condition" is a profile that the breast cancer IG depends upon, Then many changes to the observation REF condition" would not require updates to the breast cancer IG because they would simply update the underlying profile.
- But if you change for example a cardinality or added an invariant, it may create a conflict in a dependent profile and so that would require a change.
- To keep the dependencyList up to date you would need reference the location of the latest version (CI) of the parent IG or update the source file (defniitions.json.zip) with the latest version of the guide. So there may be updates to the files needed as well.
Michel Rutten (Apr 13 2017 at 09:12):
Hello @Sadiq Saleh, Forge supports derived profiles for a while. All features in the current DSTU2 release will also be available in the upcoming STU3 release. This implies that you can create a base profile and a set of more specialized profiles that are derived from it. Derived profiles implicitly inherit constraints from the base profile (and may override them). If you change the base profile, you'd have to re-generate the snapshots of the derived profiles in order to pick up the changes. Off course, if the profiles are already in production you'd have to take care not to introduce breaking changes.
Sadiq Saleh (Apr 13 2017 at 15:09):
Thank you for your responses. From them I have understood what I need to do.
For my use case I will need a generic profile on the Observation resource that will point to Condition, and then create derived profiles on this resource for each individual Observation. Thus when creating an IG for a particular cancer type, I would just need to update the main Observation and this would propogate to all the children.
For the Forge/IG builder, I have been trying to identify a quick way to append a prefix/suffix to all profile names/IDs of the profiles in the IG. Or would I still need to go to each profile individually and do this?
Eric Haas (Apr 13 2017 at 15:17):
Try a search and replace by folde +- a little regex. That is what I would do.
Sadiq Saleh (Apr 13 2017 at 15:45):
That is a good suggestion. Thank you
Michel Rutten (Apr 13 2017 at 15:57):
@Sadiq Saleh Note that if your plan to author a master "template" profile from which you create specific profiles by creating fresh copies, then you're ok. However if you create and publish profiles derived from a master base profile (i.e. for a specific cancer type), then you can no longer introduce breaking changes into the master base profile after publication, as this would break the contract.
Michel Rutten (Apr 13 2017 at 15:58):
Derived profiles have an external reference to the associated base profile. So if you publish the derived profile, then you must also publish the base profile and therefore you can no longer introduce breaking changes to both.
Sadiq Saleh (Apr 13 2017 at 16:06):
Sorry I am unfamiliar what you mean by "breaking the contract". Would this mean that the derived profiles will no longer be conformant to the master profile?
Can I create a derived profile from another IG? I am familiar with how you can do this with spreadsheets but not as familiar with the Forge tool in this regard.
Eric Haas (Apr 13 2017 at 16:09):
What Michel means is if you change the master it may break the derived profile - for example. reduce the cardinality of an element in the master profile- and then the derived profile may be broken since it for example slices on that element.
Sadiq Saleh (Apr 13 2017 at 16:12):
Okay, got it. Thanks for all your input once again. It has been very insightful.
Michel Rutten (Apr 14 2017 at 08:47):
Exactly, thank you @Eric Haas for clarifying.
Mark Kramer (May 11 2017 at 08:47):
@Sadiq Saleh I don't quite understand this question, but I hope we will be working together on cancer treatment profiles. What have you done so far? Would you be able to share your progress with the new Oncology group?
Last updated: Apr 12 2022 at 19:14 UTC