From 20bbf9f45510ac2eb73ee53d12e193709864ecc4 Mon Sep 17 00:00:00 2001 From: cssandlin Date: Thu, 27 Jun 2019 19:43:50 -0400 Subject: [PATCH] info button content udpates and release note framewwork added --- webpack/components/InfoModalBodyContent.js | 20 ++++++----------- webpack/components/questions/QuestionEdit.js | 4 ++-- webpack/components/questions/QuestionShow.js | 4 ++-- webpack/components/sections/SectionEdit.js | 8 +++---- webpack/components/sections/SectionShow.js | 2 +- webpack/components/surveys/SurveyDedupe.js | 22 +++++++++---------- webpack/components/surveys/SurveyEdit.js | 8 +++---- webpack/containers/Help.js | 17 +++++++++----- .../sections/SectionEditContainer.js | 4 ++-- .../containers/surveys/SurveyEditContainer.js | 4 ++-- 10 files changed, 47 insertions(+), 46 deletions(-) diff --git a/webpack/components/InfoModalBodyContent.js b/webpack/components/InfoModalBodyContent.js index c7da4238..2302beea 100644 --- a/webpack/components/InfoModalBodyContent.js +++ b/webpack/components/InfoModalBodyContent.js @@ -12,13 +12,13 @@ export default class InfoModalBodyContent extends Component { getContentStageInfoBody() { if(this.props.contentStage == 'Draft') { - return

Content is being worked on by its Authors and Publisher. It is generally not considered to be “complete” and unlikely ready for comment. Content at this Level should not be used. This is the initial status assigned to newly created content.

; + return

Content that is being worked on by its Authors and Publisher. It is generally not considered to be “complete” and unlikely ready for comment. Content at this Level should not be used. This is the initial status assigned to newly created content.

; } else if(this.props.contentStage == 'Comment Only') { - return

Content is being worked on by its Authors and Publisher. It is generally not considered to be “complete” but is ready for viewing and comment. Content at this Level should not be used.

; + return

Content that is being worked on by its Authors and Publisher. It is generally not considered to be “complete” but is ready for viewing and comment. Content at this Level should not be used.

; } else if(this.props.contentStage == 'Trial Use') { return

Content that the Authors and Publisher believe is ready for User viewing, testing and/or comment. It is generally “complete”, but not final. Content at this Level should not be used to support public health response.

; } else if(this.props.contentStage == 'Published') { - return

A publicly available version of content that is ready for viewing, downloading, comments, and use for public health response. Content is automatically updated to this stage at the time it is made public.

; + return

A publicly available version of content that is ready for viewing, downloading, comments, and use for public health response. Content that is automatically updated to this stage at the time it is made public.

; } else if(this.props.contentStage == 'Retired') { return

Content that is no longer the most recent version (not latest). However, this content could be used with no known risk.

; } else if(this.props.contentStage == 'Duplicate') { @@ -28,12 +28,11 @@ export default class InfoModalBodyContent extends Component { getVisibilityInfoBody() { if(this.props.visibility == 'private') { - return

When content is initially created or imported in Vocabulary Service, it is created with private visibility. Private content is only visible to the user who authored it, users that belong to a group that the content is added to, and to all Publishers in the system. Content with this visibility can be modified until the author or authoring group is ready to make the content public.

; + return

Private content is only visible to the user who authored it, users that belong to a group that the content is added to, and to all Publishers in the system. Content with this visibility can be modified until the author or authoring group is ready to make the content public. When content is initially created or imported into the Vocabulary Service, it is created with private visibility. +

Whenever an author or authoring group is ready to share their content publicly, an author must send a publish request to their program Publisher to change the visibility to public.

; } else if(this.props.visibility == 'public') { - return

Whenever an author or authoring group is ready to share their content publicly, an author must send a request to their program Publisher to change the visibility in the Vocabulary Service. Public content is visible to everyone who visits the Vocabulary Service website including users without authenticated accounts. This allows for authors to share their Vocabulary Service content with a wide public health audience. Once a version is made public, it cannot be undone. -
-
- An author can use the content stage attribute to indicate the maturity of a specific version of content and can create a new version when necessary. Authors can request that public content is “retired” which hides the content from dashboard search results.

; + return

Public content is visible to everyone who visits the Vocabulary Service website including users without authenticated accounts. This allows for authors to share their Vocabulary Service content with a wide public health audience. Once a version is made public, it cannot be undone; however authors can request that public content is “retired” which hides the content from dashboard search results. +

An author can use the “content stage” attribute to indicate the maturity of a specific version of public content (like published or trial use) or can create a new version when updates are necessary.

; } } @@ -63,11 +62,6 @@ export default class InfoModalBodyContent extends Component {

Mutability: Any changes to entries in the Code System Mappings table are versioned since code system mappings are a property of the vocabulary itself. This allows users to update the Code System Mappings while maintaining legacy mappings in older SDP-V content versions if needed.

Discoverability: Code System Mappings table fields are included in the dashboard search algorithm so other users can find questions, sections, and surveys with specific concept names, concept identifiers or code system identifiers in SDP-V. For instance, a user can enter “27268008” into the dashboard search box to find content in SDP-V associated with that concept identifier.

-

Definitions

-

Concept Name: Term from a controlled vocabulary to designate a unit of meaning or idea (e.g., ‘Genus Salmonella (organism)’). A controlled vocabulary includes external code systems, such as LOINC or SNOMED-CT, or internally developed vocabularies such as PHIN VADS.

-

Concept Identifier: This is text or a code used to uniquely identify a concept in a controlled vocabulary (e.g., 27268008). Note that if you have selected a code system mapping that has already been used in SDP-V or is selected from the results from "Search for external coded items", this field will be automatically populated.

-

Code System Identifier: This is the unique designator for a code system also referred to as a controlled vocabulary, in which concepts and value sets are defined (e.g. 2.16.840.1.113883.6.96). LOINC, SNOMED-CT, and RxNorm are code systems. Note that if you have mapped a code system to a question or response set that has already been mapped in SDP-V or returned from an external code system search, the code system identifier field will be automatically populated.

-

Example Code System Mappings Table

diff --git a/webpack/components/questions/QuestionEdit.js b/webpack/components/questions/QuestionEdit.js index 993a8c7f..49a9dc3a 100644 --- a/webpack/components/questions/QuestionEdit.js +++ b/webpack/components/questions/QuestionEdit.js @@ -292,11 +292,11 @@ class QuestionEdit extends Component { { this.isChoiceType() ? - Search through existing Response Sets in the system to identify the expected responses from this question. To select a specific Response Set, click the blue “+” button. Once added, the “+” sign will change into a checkmark to indicate the Response Set will be associated with the Question save.

} hideInfo={()=>this.setState({showInfoSearchandSelectResponseSet:false})} /> + Search through existing Response Sets in the system to identify the expected responses from this question. To select a specific Response Set, click the blue “+” button. Once added, the “+” sign will change into a checkmark to indicate the Response Set will be associated with the saved Question.

} hideInfo={()=>this.setState({showInfoSearchandSelectResponseSet:false})} />
- The “Selected Response Sets” panel displays your selections. Adding a Response Set to a Question simply means that the Response Set(s) are a valid set of choices for the Question. You can add more than one Response Set if appropriate.

Author Recommended Response Sets: Response sets added to a Question by the author at the time of creation will be displayed in the UI on the Question Details page as “Author Recommended Response Sets”. This allows the author of the question to identify Response Sets that are appropriate for different contexts (e.g., For a Question asking about a vaccine administered, valid Response Sets may include condition-specific vaccine types, like varicella, influenza, or pertussis). These “author recommended response sets” will populate the Response Set drop down menu on the “Create Section” page to encourage reuse of these Response Sets.

Note: If a user would like reuse a Question, but the “author recommended response sets” do not meet the needs of that user, users can select other Response Sets from the repository to associate with the Question while creating, editing, or revising a Section (See Section 7.1.3 of the User Guide). This allows other SDP-V users to reuse Questions in the repository but provides the flexibility to select a context appropriate Response Set on a given Section.

} hideInfo={()=>this.setState({showinfoSelectedResponseSets: false})} /> + The “Selected Response Sets” panel displays your selections. Adding a Response Set to a Question simply means that the Response Set(s) are a valid set of choices for the Question. You can add more than one Response Set if appropriate.

Author Recommended Response Sets: Response sets added to a Question by the author at the time of creation will be displayed in the UI on the Question Details page as “Author Recommended Response Sets”. This allows the author of the question to identify Response Sets that are appropriate for different contexts (e.g., For a Question asking about a vaccine administered, valid Response Sets may include condition-specific vaccine types, like varicella, influenza, or pertussis). These “author recommended response sets” will populate the Response Set drop down menu on the “Create Section” page to encourage reuse of these Response Sets.

Note: If a user would like to reuse a Question, but the “author recommended response sets” do not meet the needs of that user, users can select other Response Sets from the repository to associate with the Question while creating, editing, or revising a Section. This allows other SDP-V users to reuse Questions in the repository but provides the flexibility to select a context appropriate Response Set on a given Section.

} hideInfo={()=>this.setState({showinfoSelectedResponseSets: false})} /> After searching the service, if no suitable response sets are found, a user can create a new response set and add it to question directly from this page.

} hideInfo={()=>this.setState({showInfoAddNewResponseSet: false})} /> diff --git a/webpack/components/questions/QuestionShow.js b/webpack/components/questions/QuestionShow.js index 116d1bb5..1bfac4bc 100644 --- a/webpack/components/questions/QuestionShow.js +++ b/webpack/components/questions/QuestionShow.js @@ -412,7 +412,7 @@ export default class QuestionShow extends Component { {question.responseType.name} } {question.dataCollectionMethods && question.dataCollectionMethods.length > 0 &&
- The Data Collection Method attribute represents the manner in which the Question is used to collect data at the time of administration. This is not necessarily the same as how CDC is receiving the data.

This attribute is optional but completion helps other users find questions in SDP-V most suited for a specific data collection method. There is an advanced search filter based off of this attribute. + The Data Collection Method attribute represents the manner in which the Question is used to collect data at the time of administration. This is not necessarily the same as how CDC is receiving the data.

This attribute is optional but completion helps other users find questions in SDP-V most suited for a specific data collection method. There is an advanced search filter based off of this attribute.

} hideInfo={()=>this.setState({showInfoDataCollectionMethods: false})} /> Data Collection Methods{}:
    @@ -444,7 +444,7 @@ export default class QuestionShow extends Component {

    - The parent items window shows how content is being reused across the service. It helps to answer “where is this question being used?”. The default view shows the names of the different Sections that the Question is being used on. The user can view the Surveys that each Section is used on by clicking “+”.

    } hideInfo={()=>this.setState({showInfoParentItemsQuestion: false})} /> + The parent items window shows how content is being reused across the service. It helps to answer “where is this question being used?”. The default view shows the names of the different Sections that the Question is being used on. The user can view the Surveys that each Question is used on by clicking “+”.

    } hideInfo={()=>this.setState({showInfoParentItemsQuestion: false})} /> Click link to expand information about (Parent Items)Parent Items diff --git a/webpack/components/sections/SectionEdit.js b/webpack/components/sections/SectionEdit.js index bf467969..7a1fe40a 100644 --- a/webpack/components/sections/SectionEdit.js +++ b/webpack/components/sections/SectionEdit.js @@ -320,14 +320,14 @@ class SectionEdit extends Component {

- The “Selected Questions and Sections” panel displays the selected content for this Section. A Section may contain either Questions only, Sections only, or a mixture or both Questions and Sections.

} hideInfo={()=>this.setState({showInfoSelectedQuestionsandSections: false})} /> + The “Selected Questions and Sections” panel displays the selected content for this Section. A Section may contain either Questions only, Sections only, or a mixture of both Questions and Sections.

} hideInfo={()=>this.setState({showInfoSelectedQuestionsandSections: false})} />
- For Questions with Choice or Open Choice response types: The Vocabulary Service allows users to reuse Questions in the repository created by another author while providing the flexibility to select a context appropriate Response Set on a given Section if the author recommended response sets do not fit their needs. + For Questions with Choice or Open Choice response types: The Vocabulary Service allows users to reuse Questions in the repository created by another author while providing the flexibility to select a context appropriate Response Set on a given Section if the "author recommended response sets" do not fit their needs.

To determine if a new response set if necessary: -

1) The user should first consider using the response sets populated in the response set drop-down menu; these are response sets there were selected as valid response options by the question author (aka author recommended response sets). -

2) If none of the author recommend response sets is suitable, the user should select the magnifying glass icon to search for existing response sets that can be used with the selected question. To add a selected Response Set to the question, click the blue “+” button. +

1) The user should first consider using the response sets populated in the response set drop-down menu; these are response sets that were selected as valid response options by the question author (aka "author recommended response sets"). +

2) If none of the "author recommended response sets" are suitable, the user should select the magnifying glass icon to search for existing response sets that can be used with the selected question. To add a selected Response Set to the question, click the blue “+” button.

3) After searching the service, if no suitable response sets are found, a user can create a new response set directly from this page. The user can then add the newly created response set to the selected question by selecting the magnifying glass icon and locating the response set. To add the Response Set to the question, click the blue “+” button.

} hideInfo={()=>this.setState({showInfoAddNewResponseSet: false})} /> diff --git a/webpack/components/sections/SectionShow.js b/webpack/components/sections/SectionShow.js index 5ece7645..0ded8912 100644 --- a/webpack/components/sections/SectionShow.js +++ b/webpack/components/sections/SectionShow.js @@ -458,7 +458,7 @@ class SectionShow extends Component {

- The parent items window shows how content is being reused across the service. It helps to answer “where is this question being used?”. The default view shows the names of the different Surveys that the Section is being used on. If the Section that is being viewed is nested on another Section in the service, the user can also see that by following the breadcrumb.

} hideInfo={()=>this.setState({showInfoParentItemsSection: false})} /> + The parent items window shows how content is being reused across the service. It helps to answer “where is this section being used?”. The default view shows the names of the different Surveys that the Section is being used on. If the Section that is being viewed is nested on another Section in the service, the user can also see that by following the breadcrumb.

} hideInfo={()=>this.setState({showInfoParentItemsSection: false})} /> Click link to expand information about Parent Items diff --git a/webpack/components/surveys/SurveyDedupe.js b/webpack/components/surveys/SurveyDedupe.js index 0286d161..a33cd4bf 100644 --- a/webpack/components/surveys/SurveyDedupe.js +++ b/webpack/components/surveys/SurveyDedupe.js @@ -171,7 +171,7 @@ class SurveyDedupe extends Component { {this.state.success.name}

} - Questions are listed by the Section from the Survey that they are from.

The Section name and total number of questions from that Section that are similar to existing questions in the SDP-V repository are listed as headers. Next, the list of questions within each Section is provided, including the question name, description, visibility, response type, and category for each question.

} hideInfo={()=>this.setState({showQuestionNameAndDescription: false})} /> + Questions are listed by the Section from the Survey that they are from.

The Section name and total number of Questions from that Section that are similar to existing Questions in the SDP-V repository are listed as headers. Next, the list of Questions within each Section is provided; details provided for each includes the question name, description, visibility, response type, and category.

} hideInfo={()=>this.setState({showQuestionNameAndDescription: false})} /> Select “View” to see the list of Questions from the SDP-V repository that are similar (at least 85% overlap in select fields) to the selected Question.

} hideInfo={()=>this.setState({showQuestionAction: false})} /> Total questions on this survey that are similar (at least 85% overlap in select fields) to existing questions in the SDP-V repository.

} hideInfo={()=>this.setState({showQuestionsFromYourSurveyWithSuggestedReplacements: false})} />

Questions from your Survey w/Suggested Replacements{} ({qCount})

@@ -231,10 +231,10 @@ class SurveyDedupe extends Component { {this.state.success.name}
} - Total response sets on this survey that are similar (at least 85% overlap in select fields) to existing response sets in the SDP-V repository.

} hideInfo={()=>this.setState({showResponseSetsFromYourSurveyWithSuggestedReplacements: false})} /> - Response Sets are listed by the Section from the Survey that they are from.

The Section name and total number of response sets from that section that are similar to existing response sets in the SDP-V repository are listed as headers. Next, the list of response sets within each section is provided, including the response set name, description, visibility, linked question, and list of responses.

} hideInfo={()=>this.setState({showResponseSetNameAndDescription: false})} /> + Total Response Sets on this survey that are similar (at least 85% overlap in select fields) to existing Response Sets in the SDP-V repository.

} hideInfo={()=>this.setState({showResponseSetsFromYourSurveyWithSuggestedReplacements: false})} /> + Response Sets are listed by the Section from the Survey that they are from.

The Section name and total number of Response Sets from that Section that are similar to existing Response Sets in the SDP-V repository are listed as headers. Next, the list of Response Sets within each Section is provided; details provided for each includes the response set name, description, visibility, linked question, and list of responses.

} hideInfo={()=>this.setState({showResponseSetNameAndDescription: false})} /> Select “View” to see the list of Response Sets from the SDP-V repository that are similar (at least 85% overlap in select fields) to the selected Response Set.

} hideInfo={()=>this.setState({showResponseSetAction: false})} /> - Click the arrows to view the list of suggested replacement response sets for each response set on your survey. Click “List all” to return to the curation wizard summary page to view all response sets on your survey that are similar to others in the repository.

} hideInfo={()=>this.setState({showResponseSetsWithSuggestedReplacementsListAll: false})} /> + Click the arrows to view the list of suggested replacement Response Sets for each response set on your survey. Click “List all” to return to the curation wizard summary page to view all response sets on your survey that are similar to others in the repository.

} hideInfo={()=>this.setState({showResponseSetsWithSuggestedReplacementsListAll: false})} />

Response Sets from Your Survey w/Suggested Replacements{} ({rsCount})

@@ -381,7 +381,7 @@ class SurveyDedupe extends Component { - This is a question from the selected Survey.

} hideInfo={()=>this.setState({showQuestionsFromYourSurvey: false})} /> + The Question highlighted in yellow is from the selected Survey named above.

} hideInfo={()=>this.setState({showQuestionsFromYourSurvey: false})} /> } hideInfo={()=>this.setState({showQuestionMarkAsReviewed: false})} />

Questions from your Survey{}

Information about potential duplicate response sets in this survey
@@ -414,9 +414,9 @@ class SurveyDedupe extends Component { }}>Mark as Reviewed{} }
- This is the list of similar questions from the SDP-V repository for the author to review to determine if one of them can replace the question from the author's survey to promote harmonization.

When selecting a replacement, consider CDC preferred, stage, and program usage.

} hideInfo={()=>this.setState({showSuggestedReplacementQuestions: false})} /> - If the question from your survey has private visibility, you can replace your question with an existing question from the repository. This will delete your question from the repository and replace it with the one you select.

} hideInfo={()=>this.setState({showQuestionMatchScoreActionPrivate: false})} /> - If the question form your survey has public visibility, you can “link” your question to an existing question in the repository. This indicates that the question from the repository can replace the question from your survey on future versions. This also indicates to other users who are using your question to consider the suggested replacement question. This linkage will appear on the curation history tab on the question details page.

} hideInfo={()=>this.setState({showQuestionMatchScoreActionPublic: false})} /> + This is the list of similar Questions from the SDP-V repository for the author to review to determine if one of them can replace the Question from the author's Survey to promote harmonization.

When selecting a replacement, consider CDC preferred, stage, and program usage.

} hideInfo={()=>this.setState({showSuggestedReplacementQuestions: false})} /> + If the Question from your survey has private visibility, you can replace your Question with an existing Question from the repository. This will delete your Question from the repository and replace it everywhere it is used in the Vocabulary Service with the one you select.

} hideInfo={()=>this.setState({showQuestionMatchScoreActionPrivate: false})} /> + If the question from your survey has public visibility, you can “link” your question to an existing question in the repository. This indicates that the question from the repository can replace the question from your survey on future versions. This also indicates to other users who are using your question on a survey to consider the suggested replacement question during their next revision. This linkage will appear on the curation history tab on the question details page.

} hideInfo={()=>this.setState({showQuestionMatchScoreActionPublic: false})} />

Suggested Replacement Questions{} ({question.potentialDuplicates && question.potentialDuplicates.length})

{question.draftQuestion.curatedAt &&

(Last reviewed: {question.draftQuestion.curatedAt}) { e.preventDefault(); @@ -540,9 +540,9 @@ class SurveyDedupe extends Component { }}>Mark as Reviewed{}

}
- This is the list of similar response sets from the SDP-V repository for the author to review to determine if one of them can replace the response set from the author's survey to promote harmonization.

When selecting a replacement, consider CDC preferred, stage, and program usage.

} hideInfo={()=>this.setState({showSuggestedReplacementResponseSets: false})} /> - If the response set from your survey has private visibility, you can replace your response set with an existing response set from the repository. This will delete your response set from the repository and replace it with the one you select.

} hideInfo={()=>this.setState({showResponseSetMatchScoreActionPrivate: false})} /> - If the response set from your survey has public visibility, you can “link” your response set to an existing response set in the repository. This indicates that the response set from the repository can replace the response set from your survey on future versions. This also indicates to other users who are using your response set to consider the suggested replacement response set. This linkage will appear on the curation history tab on the response set details page.

} hideInfo={()=>this.setState({showResponseSetMatchScoreActionPublic: false})} /> + This is the list of similar Response Sets from the SDP-V repository for the author to review to determine if one of them can replace the Response Set from the author's Survey to promote harmonization.

When selecting a replacement, consider CDC preferred, stage, and program usage.

} hideInfo={()=>this.setState({showSuggestedReplacementResponseSets: false})} /> + If the Response Set from your survey has private visibility, you can replace your Response Set with an existing Response Set from the repository. This will delete your Response Set from the repository and replace it everywhere it is used in the Vocabulary Service with the one you select.

} hideInfo={()=>this.setState({showResponseSetMatchScoreActionPrivate: false})} /> + If the response set from your survey has public visibility, you can “link” your response set to an existing response set in the repository. This indicates that the response set from the repository can replace the response set from your survey on future versions. This also indicates to other users who are using your response set on a survey to consider the suggested replacement response set during their next revision. This linkage will appear on the curation history tab on the response set details page.

} hideInfo={()=>this.setState({showResponseSetMatchScoreActionPublic: false})} />

Suggested Replacement Response Sets{} ({responseSet.potentialDuplicates && responseSet.potentialDuplicates.length})

{responseSet.draftResponseSet.curatedAt &&

(Last reviewed: {responseSet.draftResponseSet.curatedAt}) { e.preventDefault(); diff --git a/webpack/components/surveys/SurveyEdit.js b/webpack/components/surveys/SurveyEdit.js index 67059bd6..38ec8344 100644 --- a/webpack/components/surveys/SurveyEdit.js +++ b/webpack/components/surveys/SurveyEdit.js @@ -299,7 +299,7 @@ class SurveyEdit extends Component { surveillanceSystems={this.props.surveillanceSystems} surveillancePrograms={this.props.surveillancePrograms} />

- Identify the program that will maintain and use this vocabulary to support public health activities.

The default value is populated from the author’s profile, The value can be changed by selecting the pencil icon.

} hideInfo={()=>this.setState({showInfoProgram: false})} /> + Identify the program that will maintain and use this vocabulary to support public health activities.

The default value is populated from the author’s profile. The value can be changed by selecting the pencil icon.

} hideInfo={()=>this.setState({showInfoProgram: false})} />
{ e.preventDefault(); @@ -307,7 +307,7 @@ class SurveyEdit extends Component { }}> {this.props.surveillancePrograms && this.props.surveillancePrograms[this.state.surveillanceProgramId] && this.props.surveillancePrograms[this.state.surveillanceProgramId].name} - Identify the surveillance system that will use this vocabulary to support public health activities.

The default value is populated from the author’s profile, The value can be changed by selecting the pencil icon.

} hideInfo={()=>this.setState({showInfoSystem: false})} /> + Identify the surveillance system that will use this vocabulary to support public health activities.

The default value is populated from the author’s profile. The value can be changed by selecting the pencil icon.

} hideInfo={()=>this.setState({showInfoSystem: false})} /> { e.preventDefault(); @@ -324,9 +324,9 @@ class SurveyEdit extends Component {