<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.moodle.org/dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jonathannewman</id>
	<title>MoodleDocs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.moodle.org/dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jonathannewman"/>
	<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/Special:Contributions/Jonathannewman"/>
	<updated>2026-04-14T17:01:10Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Overview&amp;diff=7043</id>
		<title>Overview</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Overview&amp;diff=7043"/>
		<updated>2011-03-30T20:21:11Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: /* The key players */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A lot of people ask how the development of Moodle operates.  This page should give you a working overview that should help in understanding a lot of other developer documentation.&lt;br /&gt;
&lt;br /&gt;
==The key players==&lt;br /&gt;
&lt;br /&gt;
;Martin Dougiamas: Martin is the lead developer of Moodle. Generally he tries to facilitate democracy and meritocracy but occasionally has to make executive decisions on things.&lt;br /&gt;
&lt;br /&gt;
;Moodle HQ: The mostly-Australian team of developers who are directly funded by the Moodle project to work full-time on core developments.  Developers include Martin Dougiamas (moodler), Eloy Lafuente (stronk7), Petr Skoda (skodak), Mathieu Petit-Clair (scyrma), Nicolas Connault, Donsheng Cai, Jérôme Mouneyrac, Helen Foster (wildgirl) and occasionally Jamie Pratt (jamiesensei). Pictures of everyone can be found here: http://moodle.com/hq/.&lt;br /&gt;
&lt;br /&gt;
;Catalyst: The team of developers working for Moodle clients via Catalyst Ltd in New Zealand, resulting in a lot of core development. Core developers include Matt Clarkson, Peter Bulmer, Aaron Barnes, Jonathan Harker, Francois Marier, Piers Harding, Dan Marsden, and Simon Coggins. The legacy of former Catalyst core developers includes Martin Langhoff, Penny Leach (mjollnir), Donal McMullan, Luke Hudson, and Jonathan Newman.&lt;br /&gt;
&lt;br /&gt;
;Open University: The team of developers working on Moodle implementations at Open University in the UK.  Developers include Tim Hunt, Sam Marshall, Nick Freear, Thanh Le and Jenny Gray.&lt;br /&gt;
&lt;br /&gt;
There are many other people contributing to Moodle in many ways, these are just the main groups currently working on core development.  See [http://moodle.org/cvs the full list of people with write access to Moodle]&lt;br /&gt;
&lt;br /&gt;
==Moodle versions==&lt;br /&gt;
&lt;br /&gt;
Moodle major releases occur roughly 6 months or more apart, on no fixed schedule.  Each major release increments the version number by 0.1.  Minor releases (no new features, just fixes) on each stable branch can occur at any time, whenever enough bug fixes have been made to justify them.  The full details can be seen in the [[Release notes]].&lt;br /&gt;
&lt;br /&gt;
The current development version is always on the trunk of CVS (i.e. HEAD), while stable branches are split off for every major version (e.g. MOODLE_18_STABLE).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==How we develop the Roadmap==&lt;br /&gt;
&lt;br /&gt;
The [[Roadmap]] lists the features being developed for the next version.  This list is derived mostly from the issues with large numbers of votes in the Moodle [[Tracker]], so please vote for what you want!  Other influences include general discussion and feature requests at Moodle Moots and in the Moodle forums.&lt;br /&gt;
&lt;br /&gt;
==Release cycles==&lt;br /&gt;
&lt;br /&gt;
Generally a cycle works like this:&lt;br /&gt;
;Rapid Development:Long period of several months adding code to the HEAD version of Moodle.  At the same time, all fixes that don&#039;t involve database changes or radical core changes are backported to the last two or three stable branches.&lt;br /&gt;
;Head Freeze:At some point Martin Dougiamas declares a freeze on new work for a while to stabilise the core.  All database changes and all major core changes need to have explicit permission from Martin.  All developers should be wrapping up work on new features and fixing bugs in new code.  This period may be 1 or 2 weeks.&lt;br /&gt;
;Beta period:Once the HEAD version becomes fairly stable, Martin declares a BETA version and this point is marked on HEAD as MOODLE_XX_BETA (e.g. MOODLE_19_BETA).  Install packages are generated daily from the latest version for wider testing and feedback via the tracker.  The freeze continues, testing and bug fixing continues.  This testing period may be anywhere from 2 to 6 weeks.&lt;br /&gt;
;Major release:When the core code passes all the testing we can throw at it, the MOODLE_XX_BETA flag is moved up to mark the current point as a branch point, and a new stable branch named MOODLE_XX_STABLE is created.  Packages are created, and the release is announced.&lt;br /&gt;
&lt;br /&gt;
Then it all starts again!&lt;br /&gt;
&lt;br /&gt;
Moodle HQ is committed to supporting the two most recent stable versions. That is, at any point in time:&lt;br /&gt;
&lt;br /&gt;
* We work on the next version but don&#039;t provide production support&lt;br /&gt;
* We support the most recent stable version with constant bug fixes&lt;br /&gt;
* We support the previous recent stable version, but mostly only serious bugs and security issues&lt;br /&gt;
* We don&#039;t support any older versions&lt;br /&gt;
&lt;br /&gt;
==Quality control==&lt;br /&gt;
&lt;br /&gt;
Issue tracking is an important part of a continuous quality control process. It involves reporting of problems (bugs), ideas for improvement and new features. Unlike most proprietary software programs, Moodle issue reporting and tracking information is open to everyone. Moodle&#039;s issue tracking system is called the [[Tracker]].&lt;br /&gt;
&lt;br /&gt;
All Moodle users are encouraged to be active participants when it comes to testing. Anyone with a Tracker user account can create, view, comment on, vote, and watch bugs.&lt;br /&gt;
&lt;br /&gt;
===Testers===&lt;br /&gt;
&lt;br /&gt;
Testers are responsible for verifying the accuracy of changes made by developers. Testers choose which bugs they want to test, according to their area of expertise, and use the QA Assignee field to identify themselves as the tester.&lt;br /&gt;
&lt;br /&gt;
If the bug passes testing, then the tester changes the status of the bug from &#039;resolved&#039; to &#039;closed&#039;. If the bug fails testing, or if the fix is incomplete, then the tester reopens the bug.&lt;br /&gt;
&lt;br /&gt;
A Moodle release will be deemed ready when all &amp;quot;blocker&amp;quot; bugs fixed for a particular version have been closed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Weekly Code Review===&lt;br /&gt;
&lt;br /&gt;
Every Tuesday (all time zones), testers and core developers stop developing new code and focus on reviewing changes made to the stable releases in the past week (both at a code level and an interface level).&lt;br /&gt;
&lt;br /&gt;
This process is intended to improve the quality of the latest download packages and to catch any new bugs that might have been created while fixing old ones.&lt;br /&gt;
&lt;br /&gt;
The latest stable packages are tagged as MOODLE_19_WEEKLY (these tags are updated after the weekly review is over).&lt;br /&gt;
&lt;br /&gt;
See [[Weekly Code Review]] for more details.&lt;br /&gt;
&lt;br /&gt;
==Coding Standards==&lt;br /&gt;
&lt;br /&gt;
The full [[Coding|Coding Guide]] gives all the details, but here are some of the major things  your code needs to hit:&lt;br /&gt;
&lt;br /&gt;
===XMLDB===&lt;br /&gt;
&lt;br /&gt;
All our database schema are created using the XML &#039;&#039;install.php&#039;&#039; files, and upgraded using database-agnostic commands in &#039;&#039;upgrade.php&#039;&#039; files.  Any version of any part of Moodle can be smoothly upgraded to any later version in this fashion (on a wide variety of supported databases).&lt;br /&gt;
&lt;br /&gt;
===XHTML===&lt;br /&gt;
&lt;br /&gt;
All output from Moodle must be compliant with XHTML Strict 1.0, and also compliant with all common accessibility guidelines (such as W3C WAG).  &lt;br /&gt;
&lt;br /&gt;
===Forms===&lt;br /&gt;
&lt;br /&gt;
All forms should use the Moodleforms library if possible.  This results in a standardised accessible output that designers can style consistently and well.&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
All parameters should be checked using require_param() and optional_param() which will safely clean all incoming data for use and provide defaults to your code.  Moodleforms will do this automatically for you.&lt;br /&gt;
&lt;br /&gt;
===Output===&lt;br /&gt;
&lt;br /&gt;
All textual output should be output using the format_text or format_string functions.  This will ensure that text is cleaned and filtered appropriately.&lt;br /&gt;
&lt;br /&gt;
===Access===&lt;br /&gt;
&lt;br /&gt;
All permissions-checking should use the &amp;quot;Access library&amp;quot; to check against current capabilities.  The most common function you&#039;ll use is has_capability() which checks the permissions of the current user in an efficient way to see if they are allowed to do this specific operation.   Do not check for specific roles in your code (e.g. teacher/student) as that will make your code useless.&lt;br /&gt;
&lt;br /&gt;
===Other core libraries===&lt;br /&gt;
&lt;br /&gt;
The other major libraries you should get familiar with are:&lt;br /&gt;
# &#039;&#039;moodlelib.php&#039;&#039; - a useful bin of all kinds of useful functions and constants&lt;br /&gt;
# &#039;&#039;datalib.php&#039;&#039; - all the functions you need to interface with the database &lt;br /&gt;
# &#039;&#039;weblib.php&#039;&#039; - all the functions you&#039;ll need to create and output XHTML &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Plugins===&lt;br /&gt;
&lt;br /&gt;
Moodle has about 22 different types of plugins last time I counted.  Plugins can generally be self-contained in a single directory containing scripts, images, stylesheets and language files all in one package that can be dropped into the Moodle script directory in the right place.  After that the admin just needs to visit the admin page to install them.&lt;br /&gt;
&lt;br /&gt;
Most plugins work in one of two ways, they either provide a &#039;&#039;lib.php&#039;&#039; filled with common functions and some scripts with standard names, or they subclass a proto-plugin and override a few method functions to achieve their goals.  &lt;br /&gt;
&lt;br /&gt;
The best way to learn is to pick an example from the core code that is similar to what you want to do and start playing with it.   There are also some template plugins to help get you started.&lt;br /&gt;
&lt;br /&gt;
==Development processes==&lt;br /&gt;
Not all Moodle development happens exactly like this, but it really should. :-)&lt;br /&gt;
&lt;br /&gt;
===Major Development===&lt;br /&gt;
A major development is a significant piece of new code, adding new functionality to Moodle.&lt;br /&gt;
&lt;br /&gt;
====Make sure it&#039;s a good idea====&lt;br /&gt;
Firstly, you should look at the roadmap and talk the idea over with some Moodle developers to see if someone else is working on it already and whether others think the general idea has merit.  Use the forums if you wish, or whatever means you have.  If you have a client, you may need to work with them to work out what they REALLY want (perhaps it isn&#039;t actually a new development for Moodle).&lt;br /&gt;
&lt;br /&gt;
====Create a specification in Moodle Docs====&lt;br /&gt;
Start a new page in the Moodle Docs wiki, similar to [[Grades]].  Your page should outline the database table design, the GUI, the hows and whys etc.  Include as much detail as you need (even mock screenshots) but try to keep it clear and logically organised.&lt;br /&gt;
&lt;br /&gt;
====Seek and absorb community feedback====&lt;br /&gt;
Post about the new page in the appropriate forums on [http://moodle.org/course/view.php?id=5 Using Moodle] to help draw attention to it and to stimulate some discussion around your development.  The more feedback you have the better, especially if it includes a wide variety of users (developers, teachers, students etc).&lt;br /&gt;
&lt;br /&gt;
Edit your page in response to the feedback, or invite people to do so themselves.  try to evolve the specification into something that all users are happy with.   Sometimes it&#039;s worth working harder to find the &amp;quot;best&amp;quot; way to do something without adding Yet Another Option.&lt;br /&gt;
&lt;br /&gt;
====Set up tasks in the Moodle Tracker====&lt;br /&gt;
Once the specification has settled down, it&#039;s time to start work.  Create a new task for yourself in the Moodle Tracker, and add sub-tasks in roughly chronological order for all the different parts of the job.   This not only helps you keep track of where you are, but allows the community to &amp;quot;watch you&amp;quot; develop and to help you where they can.  If there are different people working on different parts, you can assign subtasks to different people.  It&#039;s really very convenient to use once you get the hang of it.&lt;br /&gt;
&lt;br /&gt;
====Use CVS and link commits to Tracker====&lt;br /&gt;
If possible, develop the code in an open code repository (and preferably Moodle CVS!).  If you need CVS write access to the core code or the contrib repository, use the &amp;quot;Apply for CVS Access&amp;quot; tab on http://moodle.org/cvs. Gaining access to the main core code is quite difficult, but we are generally very free with access to the contrib area.&lt;br /&gt;
&lt;br /&gt;
Every time you make a commit, include a detailed message about the new code and always include a Moodle Tracker bug number (e.g. MDL-7777).  This will ensure that the Moodle Tracker is able to detect your commit and attach it to the relevant bug report.&lt;br /&gt;
&lt;br /&gt;
====Comment on milestones in forums and tracker====&lt;br /&gt;
If you hit a major milestone, or want testers to try something, feel free to post about it in the relevant forum on Using Moodle.  The more people you can attract to look and try out your code the better it will be, trust me.&lt;br /&gt;
&lt;br /&gt;
====Respond to bug reports====&lt;br /&gt;
Of course you need to listen to your users (well, most of them :-)).  Encourage people to file bugs, and fix them.  If you need help setting up a project category in the Tracker contact support@moodle.com.  This will ensure that all your bugs are easy to find and to track.&lt;br /&gt;
&lt;br /&gt;
===Minor Development=== &lt;br /&gt;
&lt;br /&gt;
For smaller modules, fixes, improvements and other issues.&lt;br /&gt;
&lt;br /&gt;
====Create a new issue in the tracker====&lt;br /&gt;
&lt;br /&gt;
You should definitely create an issue in the tracker to describe your development and to act as a focus point for all discussion.  You can reference the bug number from forum discussions and in commit messages etc.  This way everyone can easily find out exactly what they are talking about.&lt;br /&gt;
&lt;br /&gt;
====Attach a patch====&lt;br /&gt;
&lt;br /&gt;
If you have some code, please attach it to the tracker issue, or if it&#039;s on your own site then link to it from the tracker issue.  Don&#039;t attach code in the Moodle forums ... it will &amp;quot;rot&amp;quot; quickly there and just clogs up moodle.org with useless old code.&lt;br /&gt;
&lt;br /&gt;
====Promote the patch====&lt;br /&gt;
&lt;br /&gt;
By all means draw attention to your work in the Moodle forums (mentioning the bug number) or email developers directly to help make them aware of it.  You can also add developers as &amp;quot;watchers&amp;quot; to the tracker issue if you want, this means they will get email for every change on the issue.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[Finding your way into the Moodle code]]&lt;br /&gt;
* [[Working with the Community]]&lt;br /&gt;
* [[Guidelines for contributed code]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Overview]]&lt;br /&gt;
[[Category:Quality Assurance|Overview]]&lt;br /&gt;
[[Category:Processes|Overview]]&lt;br /&gt;
&lt;br /&gt;
[[ru:Development:Краткий обзор]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Course_completion&amp;diff=8812</id>
		<title>Course completion</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Course_completion&amp;diff=8812"/>
		<updated>2009-08-24T03:47:00Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: Data structures: shortened table names course_completion_criteria_completions and course_completion_aggregation_methods to meet the minimum table length requirements&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;This is a SPECIFICATION for a feature in Moodle 2.0 that is still under development&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: MDL-2631 Course credits and tracking of student&#039;s completion&lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: [http://moodle.org/mod/forum/discuss.php?d=126016 http://moodle.org/mod/forum/discuss.php?d=126016]&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Course_completion]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]], [[Aaron Barnes]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
We need to flag when the &amp;quot;student&amp;quot; has finished a course. :-)&lt;br /&gt;
&lt;br /&gt;
We need to allow several types of criteria to determine how a &amp;quot;student&amp;quot; can complete a course:&lt;br /&gt;
* &#039;&#039;&#039;Manual self completion&#039;&#039;&#039;: A &amp;quot;student&amp;quot; can mark her/himself complete a course.&lt;br /&gt;
* &#039;&#039;&#039;Manual completion by&#039;&#039;&#039;: An &amp;quot;admin&amp;quot;, &amp;quot;teacher&amp;quot;, &amp;quot;tutor&amp;quot;, etc can mark a student complete for a course.&lt;br /&gt;
* &#039;&#039;&#039;Activity completion&#039;&#039;&#039;: A &amp;quot;student&amp;quot; completes an activity, building on [https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] developed for 2.0 by Sam Marshall from OU.&lt;br /&gt;
* &#039;&#039;&#039;Course grade&#039;&#039;&#039;: A &amp;quot;student&amp;quot; meets or exceeds a passing grade in the course.&lt;br /&gt;
* &#039;&#039;&#039;Date&#039;&#039;&#039;: After a specified date all &amp;quot;students&amp;quot; are marked as completed in a course.&lt;br /&gt;
* &#039;&#039;&#039;Duration after enrolment&#039;&#039;&#039;: After a specified about of time after enrolment (e.g., 12 weeks), a &amp;quot;student&amp;quot; is automatically marked as complete in a course.&lt;br /&gt;
* &#039;&#039;&#039;Unenrol&#039;&#039;&#039;: After being unenroled, a &amp;quot;student&amp;quot; is marked complete for the course. Useful for external enrolment plugins.&lt;br /&gt;
&lt;br /&gt;
We need to record when and how a &amp;quot;student&amp;quot; meets each criteria in a course.&lt;br /&gt;
&lt;br /&gt;
We need to regularly aggregate the results for the criteria, measure progress, and check to see if a &amp;quot;student&amp;quot; has completed a course.&lt;br /&gt;
&lt;br /&gt;
We need to show:&lt;br /&gt;
* A &amp;quot;student&amp;quot; the necessary criteria to complete a course&lt;br /&gt;
* A &amp;quot;student&amp;quot; how s/he is progressing in a course along the necessary criteria&lt;br /&gt;
* A &amp;quot;teacher&amp;quot; how his/her students are progressing in a course and which students have completed it&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable completion tracking&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page) for activity completion. We need to change the setting&#039;s name and add another setting for course completion.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Rename the setting &amp;quot;Enable activity completion tracking&amp;quot; (the setting will continue to allow activity completion to be enabled in all courses)&lt;br /&gt;
* Create a new setting named &amp;quot;Enable course completion tracking&amp;quot; (the setting will allow course completion to be enabled in all courses)&lt;br /&gt;
&lt;br /&gt;
==Course settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides a fieldset (named &amp;quot;Student progress&amp;quot;) which contains a setting (named &amp;quot;Completion tracking&amp;quot;) which enables/disables activity completion in a course. We need to rename the setting to describe activity completion and add a setting to enable course completion.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Enable completion tracking&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page) for activity completion. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Rename the setting &amp;quot;Completion tracking&amp;quot; to &amp;quot;Activity completion tracking&amp;quot; (the setting will continue to make activity completion features available in the courses)&lt;br /&gt;
* Create a new setting named &amp;quot;Course completion tracking&amp;quot; (the setting will make course completion features available in the course)&lt;br /&gt;
&lt;br /&gt;
==Course completion settings==&lt;br /&gt;
When course completion is enabled in a course (see above), a menu item labeled &amp;quot;Completion&amp;quot; will appear in the course Administration block on the main course page. When a user clicks on the &amp;quot;Completion&amp;quot; link, the course completion admin page will display the criteria described below and in the mockup also below:&lt;br /&gt;
&lt;br /&gt;
[[Image:Edit_course_completion_settings.png|thumb|600px|Edit course completion settings]]&lt;br /&gt;
&lt;br /&gt;
===Criteria enabling===&lt;br /&gt;
We need to allow criteria to be enabled.&lt;br /&gt;
&lt;br /&gt;
We need some rules about enabled criteria in a course:&lt;br /&gt;
* Each criteria (e.g., &amp;quot;Manual self completion&amp;quot;, &amp;quot;Manual completion by&amp;quot;, etc) can be enabled&lt;br /&gt;
* By default, all criteria are not enabled&lt;br /&gt;
&lt;br /&gt;
===Criteria aggregation===&lt;br /&gt;
We need to define overall aggregation methods for the criteria type. We also need to a consistent set of aggregation methods for criteria types which have more than one possible option to determine an individual user&#039;s course completion:&lt;br /&gt;
* &amp;quot;Manual completion by&amp;quot; // more than one role can be enabled to determine if a student has completed the course&lt;br /&gt;
* &amp;quot;Activity completed&amp;quot; // more than one activity completion can be selected to determine if a student has completed the course&lt;br /&gt;
&lt;br /&gt;
Aggregation methods:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Method&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Required to complete the criteria type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Example&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;All&#039;&#039;&#039;&lt;br /&gt;
|All of the enabled child criteria must be completed&lt;br /&gt;
|Not applicable&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Any&#039;&#039;&#039;&lt;br /&gt;
|Any one (1) of the enabled child criteria must be completed&lt;br /&gt;
|Not applicable&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Fraction&#039;&#039;&#039;&lt;br /&gt;
|A fraction of the enabled child criteria must be completed&lt;br /&gt;
|0.25,0.5,0.9&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Units&#039;&#039;&#039;&lt;br /&gt;
|A specified number of the enabled child criteria must be completed &lt;br /&gt;
|2,3,4&lt;br /&gt;
|A unit of 1 is equivalent to &#039;any&#039;. A unit equal to the number of enabled child criteria is equivalent to &#039;all&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Criteria types===&lt;br /&gt;
====Manual self-completion====&lt;br /&gt;
&#039;&#039;&#039;Action:&#039;&#039;&#039;&lt;br /&gt;
* A &amp;quot;student&amp;quot; can manually indicate that s/he has completed a course via the course&#039;s [https://docs.moodle.org/en/Development:Course_completion#Block Completion progress block].&lt;br /&gt;
&#039;&#039;&#039;Tracked:&#039;&#039;&#039;&lt;br /&gt;
* The day/time when the &amp;quot;student&amp;quot; marked him/herself complete.&lt;br /&gt;
&lt;br /&gt;
====Manual completion by====&lt;br /&gt;
&#039;&#039;&#039;Action:&#039;&#039;&#039; &lt;br /&gt;
* A user assigned to the role in the course will see a checkbox in the [https://docs.moodle.org/en/Development:Course_completion#Report Completion progress report], which will allow him/her to manually &amp;quot;Mark complete&amp;quot; each applicable student enrolled in the course.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tracked:&#039;&#039;&#039;&lt;br /&gt;
* The roleid of the user who marked the &amp;quot;student&amp;quot; complete.&lt;br /&gt;
* The userid of the user who marked the &amp;quot;student&amp;quot; complete.&lt;br /&gt;
* The day/time when the user marked the &amp;quot;student&amp;quot; as complete in the course.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
# The Completion progress report will respect:&lt;br /&gt;
#* &#039;&#039;&#039;Separate groups:&#039;&#039;&#039; A &amp;quot;teacher&amp;quot; will only be able to see and mark complete students in her/his group(s) if separate groups is enabled.&lt;br /&gt;
#* &#039;&#039;&#039;Role assignments on the USER-level context:&#039;&#039;&#039; A &amp;quot;Tutor&amp;quot; or &amp;quot;Mentor&amp;quot; will only be able to see and mark complete users assigned to him/her.&lt;br /&gt;
# The criteria can be met only once by the role:&lt;br /&gt;
#* If more than one user is assigned to the role and has the capability of marking the user complete&lt;br /&gt;
#* After a &amp;quot;student&amp;quot; has been marked complete one time by a user in the role, the [https://docs.moodle.org/en/Development:Course_completion#Report Completion progress report] will not provide a checkbox in the &amp;quot;Mark complete&amp;quot; column when viewed by any user in the role in the course.&lt;br /&gt;
# We really be relying on role capabilities and permissions for this.&lt;br /&gt;
&lt;br /&gt;
====Activities completed====&lt;br /&gt;
&#039;&#039;&#039;Action:&#039;&#039;&#039; &lt;br /&gt;
* A &amp;quot;student&amp;quot; will meet the criteria when completing the specified activity, per the activity&#039;s &#039;Activity Completion&#039; settings.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tracked:&#039;&#039;&#039; &lt;br /&gt;
* The cmid, module type, and activity/resource name for each activity.&lt;br /&gt;
* The day/time when the criteria was detected as complete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;&lt;br /&gt;
# The list of activities/resources will contain:&lt;br /&gt;
#* Each activity/resource in the course with &amp;quot;Completion tracking&amp;quot; enabled within the activity/resource.&lt;br /&gt;
#* The type of each activity followed by the activity name (i.e., &amp;quot;[mod name] - [activity/resource name]&amp;quot;). See the mockup on this page (or for a basic example: &amp;quot;Quiz - Derivatives&amp;quot;).&lt;br /&gt;
# If &amp;quot;Activity completion&amp;quot; is not enabled for the site, the &amp;quot;Activities completed&amp;quot; field set will not appear on the page.&lt;br /&gt;
# If &amp;quot;Activity completion&amp;quot; is enabled for the site and not enabled for the course, the &amp;quot;Activities completed&amp;quot; field set will appear and it will only contain this message:&lt;br /&gt;
#:&#039;&#039;&amp;quot;Activity completion must be enabled for this course.&amp;quot;&#039;&#039;&lt;br /&gt;
# If &amp;quot;Activity completion&amp;quot; is enabled for the site and course, and there are no activities in the course, the &amp;quot;Activities completed&amp;quot; field set will appear and it will only contain this message:&lt;br /&gt;
#:&#039;&#039;&amp;quot;Currently, there are no activities in this course&amp;quot;&#039;&#039;&lt;br /&gt;
# If &amp;quot;Activity completion&amp;quot; is enabled for the site and course, and there are activities but none have activity completion enabled, the &amp;quot;Activities completed&amp;quot; field set will appear and it will only contain this message:&lt;br /&gt;
#:&#039;&#039;&amp;quot;Currently, none of the activities in this course have defined activity completion settings.&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Course grade====&lt;br /&gt;
&#039;&#039;&#039;Action:&#039;&#039;&#039; &lt;br /&gt;
* A &amp;quot;student&amp;quot; will meet the criteria when earning a total course grade above the passing grade.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tracked:&#039;&#039;&#039; &lt;br /&gt;
* The day/time when the user&#039;s course grade was evaluated as having exceeded the passing grade.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;&lt;br /&gt;
* The passing grade can also be updated via the course&#039;s &amp;quot;Grade to pass&amp;quot; setting found in the Grader report&#039;s edit page for the top level category for the course.&lt;br /&gt;
* Once a student has completed the course, both the &amp;quot;Passing grade&amp;quot; setting on the course page and the &amp;quot;Grade to pass&amp;quot; setting in the top level category for the course will be locked. A message about locking will appear on the settings page for the top level category for the course.&lt;br /&gt;
&lt;br /&gt;
====Date====&lt;br /&gt;
&#039;&#039;&#039;Action:&#039;&#039;&#039; &lt;br /&gt;
* A &amp;quot;student&amp;quot; enroled in the course will automatically meet the criteria after a specified date.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tracked:&#039;&#039;&#039; &lt;br /&gt;
* The day/time when specified day was evaluated as having passed.&lt;br /&gt;
&lt;br /&gt;
====Duration after enrolment====&lt;br /&gt;
&#039;&#039;&#039;Action:&#039;&#039;&#039; &lt;br /&gt;
* A &amp;quot;student&amp;quot; will meet the criteria after the specified number of days after his/her enrolment.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tracked:&#039;&#039;&#039; &lt;br /&gt;
* The day/time when the &amp;quot;student&amp;quot; marked him/herself complete.&lt;br /&gt;
&lt;br /&gt;
====Unenrolment====&lt;br /&gt;
&#039;&#039;&#039;Action:&#039;&#039;&#039; &lt;br /&gt;
* A &amp;quot;student&amp;quot; will meet the criteria when being unenroled from the course.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tracked:&#039;&#039;&#039;&lt;br /&gt;
* The day/time when the &amp;quot;student&amp;quot; was unenroled from the course.&lt;br /&gt;
&lt;br /&gt;
===Notifications===&lt;br /&gt;
====Enable====&lt;br /&gt;
If enabled, a &amp;quot;student&amp;quot; will receive notification when s/he has completed the course via the completion criteria.&lt;br /&gt;
&lt;br /&gt;
====Notify====&lt;br /&gt;
Users assigned to each selected role in the course will receive notification when each &amp;quot;student&amp;quot; completes the course.&lt;br /&gt;
&lt;br /&gt;
===Locking===&lt;br /&gt;
When the first student has completed the course, the course completion criteria settings will be locked. The course settings can be unlocked (via an &amp;quot;Unlock course completion options&amp;quot; button), however a warning message will be displayed stating that unlocking the settings requires deleting all prior course completion data for the course. Once the completion data is deleted, the settings become unlocked (i.e., un-greyed out).&lt;br /&gt;
&lt;br /&gt;
This is consistent with activity completion in 2.0, in which activity completion settings are locked when a user first completes an activity. Activity completion settings can be unlocked after all completion activity is deleted.&lt;br /&gt;
&lt;br /&gt;
==Activity settings==&lt;br /&gt;
If activity completion is enabled and activity completion is a criteria for course completion, then all activity completion settings will be locked once a student has completed the course. In this case, unlocking an activity&#039;s completion settings will require deleting both the activity&#039;s completion data and the course&#039;s completion data.&lt;br /&gt;
&lt;br /&gt;
If an activity is being tracked for course completion, we should add a warning/confirmation screen when an &amp;quot;admin&amp;quot; attempts to delete it. The message should say, &amp;quot;[Activity name] is currently a criteria for course completion. Are you sure you want to delete it?&amp;quot; [Delete anyway] / [Cancel]. If the &amp;quot;admin&amp;quot; confirms, the activity will be deleted however completion data for users who completed it will still remain tracked.&lt;br /&gt;
&lt;br /&gt;
Should the activity completion data remain?&lt;br /&gt;
Should the course completion data be re-aggregated?&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
[[Image:Course_completion_data_model.png|thumb|400px|Course completion data model]]&lt;br /&gt;
&lt;br /&gt;
===course===&lt;br /&gt;
The course table will require the following new fields. &#039;enablecompletion&#039; will now be used for activity and course completion:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Type&lt;br /&gt;
!Default &lt;br /&gt;
!Info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;completionnotify&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|Notify users when they complete this course&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===course_completion_aggr_meth===&lt;br /&gt;
This new table will be populated with the aggregation method for &amp;quot;Overall criteria&amp;quot;, &amp;quot;Manual completion by&amp;quot;, and &amp;quot;Activities completed&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Type&lt;br /&gt;
!Default &lt;br /&gt;
!Info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;course&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the course that the course completion aggregation relates to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;criteriatype&#039;&#039;&#039;&lt;br /&gt;
|int(20)&lt;br /&gt;
|null&lt;br /&gt;
|The criteria type&#039;s integer constant (&#039;role&#039;, &#039;activity&#039;) or null if &#039;overall&#039; course aggregation. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;method&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|1&lt;br /&gt;
|&#039;1&#039;=&#039;all&#039;, &#039;2&#039;=&#039;any&#039;, &#039;3&#039;=&#039;fraction&#039;, &#039;4&#039;=&#039;unit&#039;.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;value&#039;&#039;&#039;&lt;br /&gt;
|number(10)&lt;br /&gt;
|null&lt;br /&gt;
|null for &#039;all&#039; and &#039;any&#039;, 0..1 for &#039;fraction&#039;, int &amp;gt; 0 for &#039;unit&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===course_completion_criteria===&lt;br /&gt;
This new table will be populated with each criteria in each course for course completion:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Type&lt;br /&gt;
!Default &lt;br /&gt;
!Info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;course&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the course that the course completion criteria relates to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemname&#039;&#039;&#039; (not implemented)&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|null&lt;br /&gt;
|The name of the item (e.g. &amp;quot;Mark yourself complete&amp;quot;, &amp;quot;Teacher marks you complete&amp;quot;, &amp;quot;[Activity name]&amp;quot;, &amp;quot;[postenrol] days after enrolment&amp;quot;, &amp;quot;Official Date: [date]&amp;quot;. Used for all item types except unenrol.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;criteriatype&#039;&#039;&#039;&lt;br /&gt;
|int(20)&lt;br /&gt;
|&lt;br /&gt;
|The criteria type&#039;s integer constant (&#039;self&#039;, &#039;role&#039;, &#039;mod&#039;, &#039;grade&#039;, &#039;enrolperiod&#039;, &#039;date&#039;, &#039;postenrol&#039;).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;module&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|null&lt;br /&gt;
|The name of the module (e.g., &#039;scorm&#039;, &#039;quiz&#039;, &#039;feedback&#039;). Used only if criteriatype=&#039;mod&#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;moduleinstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|null&lt;br /&gt;
|The id of the activity/resource module or role. Used only if criteriatype=&#039;mod&#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;enrolperiod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|null&lt;br /&gt;
|The number of seconds after enrolment. Used only if criteriatype=&#039;enrolperiod&#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;date&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|null&lt;br /&gt;
|The timestamp of the date for course completion. Used only if criteriatype=&#039;date&#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;gradepass&#039;&#039;&#039;&lt;br /&gt;
|number(10)&lt;br /&gt;
|null&lt;br /&gt;
|The course grade required to complete this criteria. Used only if criteriatype=&#039;grade&#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;role&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|null&lt;br /&gt;
|The role id that can mark &#039;student&#039;s as complete in the course. Used only if criteriatype=&#039;role&#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;lock&#039;&#039;&#039; (currently unused)&lt;br /&gt;
|int(10)&lt;br /&gt;
|null&lt;br /&gt;
|Date this criteria was locked&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===course_completion_crit_compl===&lt;br /&gt;
This new table will be populated with records for each user as they complete each course completion criteria.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Type&lt;br /&gt;
!Default &lt;br /&gt;
!Info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user who has completed the course&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;course&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the completed course&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;criteriaid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the completion criteria this references&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;gradefinal&#039;&#039;&#039;&lt;br /&gt;
|number(10)&lt;br /&gt;
|null&lt;br /&gt;
|The final grade for the course (if referenced criteria type=&#039;grade&#039;).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;unenroled&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|null&lt;br /&gt;
|Timestamp when the user was unenroled (if referenced criteria type=&#039;unenrol&#039;).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;deleted&#039;&#039;&#039; (currently unused)&lt;br /&gt;
|int(1)&lt;br /&gt;
|null&lt;br /&gt;
|The course was deleted&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecompleted&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|null (should be notnull)&lt;br /&gt;
|Timestamp when the user completed the criteria&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===course_completion_notify===&lt;br /&gt;
This new table will be populated with the roles which should be notified for this course&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Type&lt;br /&gt;
!Default &lt;br /&gt;
!Info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;course&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the course that the condition applies to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;role&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the role that should be sent a notification when a course has been completed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;message&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|HTML formatted message to be sent to the user assigned to the role.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timesent&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the notification was sent&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===course_completions===&lt;br /&gt;
This new table will be populated with a record for a user when s/he meets course completion criteria selected/enabled for a course.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Type&lt;br /&gt;
!Default &lt;br /&gt;
!Info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user who has completed the course&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;course&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the completed course&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;deleted&#039;&#039;&#039; (currently unused)&lt;br /&gt;
|int(1)&lt;br /&gt;
|null&lt;br /&gt;
|The course was deleted&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timenotified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|null&lt;br /&gt;
|Timestamp when the user was notified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timeenroled&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp when the user enroled in the course&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecompleted&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|null (should be notnull)&lt;br /&gt;
|Timestamp when the user completed the course&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Evaluating completion=&lt;br /&gt;
Since the gradebook aggregation is performed via cron, it makes sense that course completion is also evaluated by cron.&lt;br /&gt;
&lt;br /&gt;
This creates an issue in which the progress block will not instantly not show course completion after the necessary criteria has been met by a &amp;quot;student&amp;quot;. However, this can be solved by adding some instructional text to say &amp;quot;may take a few minutes to update&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities=&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Feature&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Progress block&lt;br /&gt;
|Mark self-complete in progress block&lt;br /&gt;
|block/progress:markselfcomplete&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Progress report&lt;br /&gt;
|View course progress report&lt;br /&gt;
|coursereport/progress:view&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Progress report&lt;br /&gt;
|Mark users complete in course progress report&lt;br /&gt;
|coursereport/progress:markcomplete&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Course reporting=&lt;br /&gt;
==Completion progress report==&lt;br /&gt;
[[Image:Completion_report.png|thumb|600px|Course completion progress report]]&lt;br /&gt;
&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides a &amp;quot;Completion progress report&amp;quot;. The report can be found via on &amp;quot;Reports&amp;quot; menu item link in the course Administration block and when &amp;quot;Completion tracking&amp;quot; is enabled for the site and course.&lt;br /&gt;
&lt;br /&gt;
The report shows:&lt;br /&gt;
* A column for each of the activities/resources in the course with &amp;quot;Completion tracking&amp;quot; enabled&amp;quot;&lt;br /&gt;
* A row for each user enroled in the course&lt;br /&gt;
* The completion status for each activity&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Include in the report all enabled criteria for course completion (e.g., &amp;quot;Manual self completion&amp;quot;, &amp;quot;Manual completion by&amp;quot;, as well as the activities etc)&lt;br /&gt;
* Each user&#039;s status for completion of each criteria, indicated by a status icon&lt;br /&gt;
* Allow the completion admin page to determine which activities are shown in the report&lt;br /&gt;
* Allow the list of users to be sortable, searchable, and filterable (by group, groupings, and/or user profile fields).&lt;br /&gt;
* Allow user profile fields (standard and custom) can be added/removed as columns in the list.&lt;br /&gt;
* When rolling over the each icon, additional details (including the completion date) will display.&lt;br /&gt;
&lt;br /&gt;
See the mockup to the right with all course completion criteria appearing (i.e., all criteria types have been enabled in a course).&lt;br /&gt;
&lt;br /&gt;
As described further above, display rules for separate groups will apply. If separate groups is enabled for the course, a &amp;quot;teacher&amp;quot; will only see students and completion data for users in the group(s) that she/he is assigned to.&lt;br /&gt;
&lt;br /&gt;
Options for exporting completion data to CSV, ODF or Excel will be available. Completion dates will be included in the export.&lt;br /&gt;
&lt;br /&gt;
A column labeled &amp;quot;Mark complete&amp;quot; will appear containing a checkbox for each student if the user viewing the report is assigned to a role that is allowed to manually indicate that the students have completed the course.&lt;br /&gt;
&lt;br /&gt;
Not shown in the mockup, however we should display the specified values under the applicable heading in the report for each of the following feilds:&lt;br /&gt;
* Period after enrolment&lt;br /&gt;
* Passing grade&lt;br /&gt;
* Date (for completion)&lt;br /&gt;
&lt;br /&gt;
==Gradebook==&lt;br /&gt;
# If &amp;quot;Passing grade&amp;quot; is enabled as a criteria for course completion, a grader should have the option of seeing completion status (i.e., &amp;quot;complete&amp;quot; / &amp;quot;not complete&amp;quot;) as a column in the grader report.&lt;br /&gt;
# If a user assigned to a role that is enabled for &amp;quot;Manual completion by&amp;quot;, the user should have the option of manually indicating which students have completed the course, a &amp;quot;Mark complete&amp;quot; column will appear to the right of the &amp;quot;Course total&amp;quot; column with a checkbox for each student who has not yet completed the course.&lt;br /&gt;
&lt;br /&gt;
We should also provide an option to show course completion status in gradebook exports. Field options will include:&lt;br /&gt;
* Completion status (e.g., &amp;quot;Complete&amp;quot;, &amp;quot;Not complete&amp;quot;)&lt;br /&gt;
* Completion date&lt;br /&gt;
&lt;br /&gt;
==Completion progress block==&lt;br /&gt;
[[Image:Course_completion_progress_block.png|thumb|190px|Course completion progress block]]&lt;br /&gt;
&lt;br /&gt;
If completion is enabled for the site and a course, a completion block will be available to be added to the course.&lt;br /&gt;
&lt;br /&gt;
The block will allow a &amp;quot;student&amp;quot; to see:&lt;br /&gt;
* The completion criteria for completing the course&lt;br /&gt;
* His/her status for completion of each criteria (similar to the Completion progress report)&lt;br /&gt;
* His/her overall completion status for the course (complete / not complete)&lt;br /&gt;
&lt;br /&gt;
If all of the enabled criteria are required, the introduction text should say:&lt;br /&gt;
:&#039;&#039;&amp;quot;All of the criteria below needed&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If any of the enabled criteria are required, the introduction text should say:&lt;br /&gt;
:&#039;&#039;&amp;quot;Any of the criteria below needed&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If the current user can self complete the course, the block will provide an &amp;quot;I&#039;ve completed this course&amp;quot; button (if the user has not already marked him/herself complete).&lt;br /&gt;
&lt;br /&gt;
Activity completion criteria/status (if enabled for course completion) should be included in the block. See [http://tracker.moodle.org/browse/MDL-16466 MDL-16466] (&amp;quot;Activities on the course page do not convey to student that completion is expected or available for the activity&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
==User (course) profile==&lt;br /&gt;
Activity and course completion criteria/status data should appear in a user&#039;s &amp;quot;Outline report&amp;quot; and &amp;quot;Complete report&amp;quot; in the user profile area, which is being reworked for 2.0 separately from this spec.&lt;br /&gt;
&lt;br /&gt;
=Site reporting=&lt;br /&gt;
&lt;br /&gt;
==User (site) profile==&lt;br /&gt;
[[Image:Course_completion_user_profile_activity.png|thumb|400px|Mockup of the user profile page with Course completion report]]&lt;br /&gt;
&lt;br /&gt;
Activity and course completion criteria/status data should appear in a user&#039;s profile area.&lt;br /&gt;
&lt;br /&gt;
It would make sense for courses to be grouped by:&lt;br /&gt;
* Courses in progress&lt;br /&gt;
* Courses completed&lt;br /&gt;
* Courses not yet started&lt;br /&gt;
&lt;br /&gt;
For each course, the required criteria and status should appear.&lt;br /&gt;
&lt;br /&gt;
==My Moodle==&lt;br /&gt;
Activity and course completion criteria/status data should appear with the course and course activity listings. My Moodle is being reworked for 2.0 separately from this spec.&lt;br /&gt;
&lt;br /&gt;
=Cron=&lt;br /&gt;
A cron function will check the criteria and update the course_completion_completions table as necessary. Here&#039;s a breakdown of the tasks for each criteria, and will need to be optimised for performance and scalability across all courses:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Manual self completion:&#039;&#039;&#039; Cron not needed, performed directly from the Completion progress block.&lt;br /&gt;
* &#039;&#039;&#039;Manual completion by:&#039;&#039;&#039; Cron not needed, performed directly via the Completion progress report.&lt;br /&gt;
* &#039;&#039;&#039;Course grade:&#039;&#039;&#039; Compare the course grade to the passing grade.&lt;br /&gt;
* &#039;&#039;&#039;Unenrol:&#039;&#039;&#039; Compare course_completion-&amp;gt;unenroled to role_assignments-&amp;gt;timeend for the &amp;quot;student&amp;quot; role in the course.&lt;br /&gt;
* &#039;&#039;&#039;Date:&#039;&#039;&#039; Compare the current date to the specified date.&lt;br /&gt;
* &#039;&#039;&#039;Duration after enrolment:&#039;&#039;&#039; Compare the current date to the role_assignments-&amp;gt;timestart + the specified period after enrolment.&lt;br /&gt;
* &#039;&#039;&#039;Activity completion:&#039;&#039;&#039; Evaluate the necessary records in the course_modules_completion table.&lt;br /&gt;
* &#039;&#039;&#039;Course completion:&#039;&#039;&#039; Aggregate the necessary fields in course_completion table, updating the timecompleted field with the current timestamp if the user has met the necessary criteria.&lt;br /&gt;
* &#039;&#039;&#039;Notifications:&#039;&#039;&#039; Send out them out to the user (if enabled) and to users in the selected role.&lt;br /&gt;
&lt;br /&gt;
=Backup and restore=&lt;br /&gt;
* The new completion fields in the course table will be included in the backup.&lt;br /&gt;
* Entries in the course_completion_items, course_completion_aggregation_methods, and course_completion_notify tables for the course should also be included in the backup.&lt;br /&gt;
* When user data is included in a course backup, the backup will also include records in the course_completion_completions table for the course.&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14385</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14385"/>
		<updated>2009-08-21T01:35:50Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: User interface: &amp;quot;Competencies summary&amp;quot; user profile page - added link descriptions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to map related competencies on a given depth level&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define custom info fields on a given depth level&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure&lt;br /&gt;
#** Expanding/collapsing competencies&lt;br /&gt;
#** Sorting/searching/filtering by competency meta data&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Linking competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;within a course&#039;&#039;:&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency and a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student measured proficiencies related to evidence in his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (via either their personal profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using scale values.&lt;br /&gt;
&lt;br /&gt;
Example scales:&lt;br /&gt;
 &amp;quot;Average-based scale&amp;quot;&lt;br /&gt;
 &amp;quot;Competency-based scale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scale values&#039;&#039;&#039;: Descriptor or numeric values that comprise a scale. A scale value can have a id number (code) and description.&lt;br /&gt;
&lt;br /&gt;
Example scales values (with descriptors and numerical values) for the scale examples above:&lt;br /&gt;
 &amp;quot;Below average [1], Average [2], Above average [3]&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=User interface=&lt;br /&gt;
&lt;br /&gt;
==Site Administration block==&lt;br /&gt;
When competencies are enabled, a &amp;quot;Competencies&amp;quot; menu item should appear in the Site Administration block. An &amp;quot;Add / edit competencies&amp;quot; option should appear when &amp;quot;Competencies&amp;quot; is clicked. The &amp;quot;Add / edit competencies&amp;quot; will point to the &amp;quot;Add / edit competencies&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Add/edit competencies&amp;quot; admin page==&lt;br /&gt;
[[Image:Competencies_add_edit_default.png|thumb|400px|Mockup of the Add/edit competencies admin page (default)]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Competencies_add_edit.png|thumb|400px|Mockup of the Add/edit competencies admin page (with competencies from Example 1 framework)]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; can use this page to add and edit competencies and competency depth levels, using buttons and features available in a table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Buttons&#039;&#039;&#039;&lt;br /&gt;
* An &amp;quot;Add a new competency&amp;quot; button will link to the &amp;quot;Add a competency&amp;quot; admin page.&lt;br /&gt;
* An &amp;quot;Add a new depth level&amp;quot; button will link to the &amp;quot;Add a depth level&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table rows&#039;&#039;&#039;&lt;br /&gt;
* A &amp;quot;plus&amp;quot; / &amp;quot;minus&amp;quot; icon will appear on the right of each row in the table, allowing all child competencies to be shown or hidden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table columns&#039;&#039;&#039;&lt;br /&gt;
* A default, top-level competency depth named &amp;quot;Competency&amp;quot; will appear in a table as a column on the left. The default competency depth name can be changed (e.g., &amp;quot;Competency Area&amp;quot;, &amp;quot;Standard&amp;quot;, &amp;quot;Development Area&amp;quot;, etc).&lt;br /&gt;
* When a new competency depth is added, it will appear as column to the right of the next highest competency depth level.&lt;br /&gt;
* Appearing to the right of the competency depth level columns will be the following &amp;quot;standard&amp;quot; interface columns: &amp;quot;Evidence items&amp;quot;, &amp;quot;Edit&amp;quot;, and &amp;quot;Move competency to&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Below are more specifics on the table columns and content:&lt;br /&gt;
* &#039;&#039;[Competency depth level 0 name]&#039;&#039;, &#039;&#039;[Competency depth level 1 name]&#039;&#039;, &#039;&#039;[Competency depth level 2 name]&#039;&#039;, ... &#039;&#039;[Competency depth level n name]&#039;&#039;&lt;br /&gt;
** Columns of depth levels will be ordered from highest/top-level (on the left) to the lowest (on the right).&lt;br /&gt;
** An edit icon will appear beside each competency depth name, and will link to the &amp;quot;Edit competency depth&amp;quot; page (which will allow an &amp;quot;admin&amp;quot; to change the name of the competency depth name).&lt;br /&gt;
** The competency name will be displayed, and will link to a page containing meta data and possibly summary proficiency achievement stats about the competency.&lt;br /&gt;
* &#039;&#039;Evidence item&#039;&#039;&lt;br /&gt;
** By default the number of evidence items will be &amp;quot;0&amp;quot;. The number shown will link to the &amp;quot;Add / edit evidence items&amp;quot; admin page for the given competency.&lt;br /&gt;
* &#039;&#039;Edit&#039;&#039;&lt;br /&gt;
** Three icons appear providing the following functionality:&lt;br /&gt;
*** &amp;quot;edit&amp;quot; icon points to the &amp;quot;Edit competency&amp;quot; page for the competency&lt;br /&gt;
*** &amp;quot;delete&amp;quot; icon points to a confirmation page for deleting the competency&lt;br /&gt;
*** &amp;quot;up&amp;quot; / &amp;quot;down&amp;quot; icons will appear beside child competencies when a parent has two or more child competencies. A competency can only be moved up or down with respect to a parent competency.Only the down arrow will appear for the highest child competency, and only the up arrow will appear for the lowest child competency.&lt;br /&gt;
* &#039;&#039;Move competency to&#039;&#039;&lt;br /&gt;
** A drop down menu appears containing all parent competencies at the next highest depth. &lt;br /&gt;
** Competencies can only be moved from one parent to another parent in the same depth level.&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Add / edit a competency&amp;quot; admin page==&lt;br /&gt;
[[Image:Competencies_add.png|thumb|400px|Mockup of the Add competencies admin page]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; will be use this page to add or edit a new competency, with the following settings:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;General settings&#039;&#039;&lt;br /&gt;
* Parent competency&lt;br /&gt;
* Competency full name&lt;br /&gt;
* Competency short name&lt;br /&gt;
* Competency ID number&lt;br /&gt;
* Description&lt;br /&gt;
* Aggregation method&lt;br /&gt;
* Scale&lt;br /&gt;
* Proficiency expected&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom depth level settings&#039;&#039;&lt;br /&gt;
* Form elements based on custom fields for selected depth level (based on the parent competency)&lt;br /&gt;
* Changing the selected parent competency should update the custom fields shown, if the depth level of the parent changes&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Add / edit competency depth&amp;quot; admin page==&lt;br /&gt;
[[Image:Competencies_depth_add.png|thumb|400px|Mockup of the Add competency depth admin page]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; will be use this page to add / edit a new competency depth, with the following settings:&lt;br /&gt;
* Depth full name&lt;br /&gt;
* Depth short name&lt;br /&gt;
* Description&lt;br /&gt;
&lt;br /&gt;
Also, the depth level will be displayed&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Add / edit competency evidence&amp;quot; admin page==&lt;br /&gt;
[[Image:Competencies_evidence_add_edit.png|thumb|400px|Mockup of the Add / edit competency evidence admin page with Example 1 competencies]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; will be use this page to view / add / edit evidence for a competency. The top of the page should display the existing general data for the competency, the number of &amp;quot;students&amp;quot; who have achieved the competency, and a table showing data and functionality for each evidence item:&lt;br /&gt;
* The name of the competency evidence (which links to the evidence item in context, e.g., the course if course completion is specified, etc)&lt;br /&gt;
* The type of evidence &lt;br /&gt;
* The activity (if the evidence is an activity outcome or activity grade)&lt;br /&gt;
* The weight of the evidence&lt;br /&gt;
* Options to edit or remove the evidence&lt;br /&gt;
* The number of &amp;quot;students&amp;quot; who have achieved the evidence&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;Add new competency evidence&amp;quot; button should link to the &amp;quot;Add new competency evidence&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Competencies summary&amp;quot; user profile page==&lt;br /&gt;
&lt;br /&gt;
[[Image:Competencies_user_profile_activity.png|thumb|400px|Mockup of user profile page with Example 1 competencies]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;student&amp;quot; or a user with permission to view a student&#039;s competencies will be able to view the proficiency status for each competency as a table with the following columns:&lt;br /&gt;
* Competency depth(s)&lt;br /&gt;
* Evidence items&lt;br /&gt;
* Proficiency&lt;br /&gt;
* Scale&lt;br /&gt;
&lt;br /&gt;
Each competency name should link to a pop-up containing the competency details (full name, description, aggregation method, scale, and meta data) and list of evidence items.&lt;br /&gt;
&lt;br /&gt;
Each number of competency items should link to a pop-up containing a list of evidence items.&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Allow competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
# Allow competencies to be tagged (in a folksonomy) using Moodle&#039;s tag/lib.&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14384</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14384"/>
		<updated>2009-08-21T01:24:25Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: User interface: added &amp;quot;Add new competency evidence&amp;quot; button to the &amp;quot;Add / edit competency evidence&amp;quot; admin page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to map related competencies on a given depth level&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define custom info fields on a given depth level&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure&lt;br /&gt;
#** Expanding/collapsing competencies&lt;br /&gt;
#** Sorting/searching/filtering by competency meta data&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Linking competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;within a course&#039;&#039;:&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency and a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student measured proficiencies related to evidence in his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (via either their personal profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using scale values.&lt;br /&gt;
&lt;br /&gt;
Example scales:&lt;br /&gt;
 &amp;quot;Average-based scale&amp;quot;&lt;br /&gt;
 &amp;quot;Competency-based scale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scale values&#039;&#039;&#039;: Descriptor or numeric values that comprise a scale. A scale value can have a id number (code) and description.&lt;br /&gt;
&lt;br /&gt;
Example scales values (with descriptors and numerical values) for the scale examples above:&lt;br /&gt;
 &amp;quot;Below average [1], Average [2], Above average [3]&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=User interface=&lt;br /&gt;
&lt;br /&gt;
==Site Administration block==&lt;br /&gt;
When competencies are enabled, a &amp;quot;Competencies&amp;quot; menu item should appear in the Site Administration block. An &amp;quot;Add / edit competencies&amp;quot; option should appear when &amp;quot;Competencies&amp;quot; is clicked. The &amp;quot;Add / edit competencies&amp;quot; will point to the &amp;quot;Add / edit competencies&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Add/edit competencies&amp;quot; admin page==&lt;br /&gt;
[[Image:Competencies_add_edit_default.png|thumb|400px|Mockup of the Add/edit competencies admin page (default)]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Competencies_add_edit.png|thumb|400px|Mockup of the Add/edit competencies admin page (with competencies from Example 1 framework)]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; can use this page to add and edit competencies and competency depth levels, using buttons and features available in a table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Buttons&#039;&#039;&#039;&lt;br /&gt;
* An &amp;quot;Add a new competency&amp;quot; button will link to the &amp;quot;Add a competency&amp;quot; admin page.&lt;br /&gt;
* An &amp;quot;Add a new depth level&amp;quot; button will link to the &amp;quot;Add a depth level&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table rows&#039;&#039;&#039;&lt;br /&gt;
* A &amp;quot;plus&amp;quot; / &amp;quot;minus&amp;quot; icon will appear on the right of each row in the table, allowing all child competencies to be shown or hidden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table columns&#039;&#039;&#039;&lt;br /&gt;
* A default, top-level competency depth named &amp;quot;Competency&amp;quot; will appear in a table as a column on the left. The default competency depth name can be changed (e.g., &amp;quot;Competency Area&amp;quot;, &amp;quot;Standard&amp;quot;, &amp;quot;Development Area&amp;quot;, etc).&lt;br /&gt;
* When a new competency depth is added, it will appear as column to the right of the next highest competency depth level.&lt;br /&gt;
* Appearing to the right of the competency depth level columns will be the following &amp;quot;standard&amp;quot; interface columns: &amp;quot;Evidence items&amp;quot;, &amp;quot;Edit&amp;quot;, and &amp;quot;Move competency to&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Below are more specifics on the table columns and content:&lt;br /&gt;
* &#039;&#039;[Competency depth level 0 name]&#039;&#039;, &#039;&#039;[Competency depth level 1 name]&#039;&#039;, &#039;&#039;[Competency depth level 2 name]&#039;&#039;, ... &#039;&#039;[Competency depth level n name]&#039;&#039;&lt;br /&gt;
** Columns of depth levels will be ordered from highest/top-level (on the left) to the lowest (on the right).&lt;br /&gt;
** An edit icon will appear beside each competency depth name, and will link to the &amp;quot;Edit competency depth&amp;quot; page (which will allow an &amp;quot;admin&amp;quot; to change the name of the competency depth name).&lt;br /&gt;
** The competency name will be displayed, and will link to a page containing meta data and possibly summary proficiency achievement stats about the competency.&lt;br /&gt;
* &#039;&#039;Evidence item&#039;&#039;&lt;br /&gt;
** By default the number of evidence items will be &amp;quot;0&amp;quot;. The number shown will link to the &amp;quot;Add / edit evidence items&amp;quot; admin page for the given competency.&lt;br /&gt;
* &#039;&#039;Edit&#039;&#039;&lt;br /&gt;
** Three icons appear providing the following functionality:&lt;br /&gt;
*** &amp;quot;edit&amp;quot; icon points to the &amp;quot;Edit competency&amp;quot; page for the competency&lt;br /&gt;
*** &amp;quot;delete&amp;quot; icon points to a confirmation page for deleting the competency&lt;br /&gt;
*** &amp;quot;up&amp;quot; / &amp;quot;down&amp;quot; icons will appear beside child competencies when a parent has two or more child competencies. A competency can only be moved up or down with respect to a parent competency.Only the down arrow will appear for the highest child competency, and only the up arrow will appear for the lowest child competency.&lt;br /&gt;
* &#039;&#039;Move competency to&#039;&#039;&lt;br /&gt;
** A drop down menu appears containing all parent competencies at the next highest depth. &lt;br /&gt;
** Competencies can only be moved from one parent to another parent in the same depth level.&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Add / edit a competency&amp;quot; admin page==&lt;br /&gt;
[[Image:Competencies_add.png|thumb|400px|Mockup of the Add competencies admin page]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; will be use this page to add or edit a new competency, with the following settings:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;General settings&#039;&#039;&lt;br /&gt;
* Parent competency&lt;br /&gt;
* Competency full name&lt;br /&gt;
* Competency short name&lt;br /&gt;
* Competency ID number&lt;br /&gt;
* Description&lt;br /&gt;
* Aggregation method&lt;br /&gt;
* Scale&lt;br /&gt;
* Proficiency expected&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom depth level settings&#039;&#039;&lt;br /&gt;
* Form elements based on custom fields for selected depth level (based on the parent competency)&lt;br /&gt;
* Changing the selected parent competency should update the custom fields shown, if the depth level of the parent changes&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Add / edit competency depth&amp;quot; admin page==&lt;br /&gt;
[[Image:Competencies_depth_add.png|thumb|400px|Mockup of the Add competency depth admin page]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; will be use this page to add / edit a new competency depth, with the following settings:&lt;br /&gt;
* Depth full name&lt;br /&gt;
* Depth short name&lt;br /&gt;
* Description&lt;br /&gt;
&lt;br /&gt;
Also, the depth level will be displayed&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Add / edit competency evidence&amp;quot; admin page==&lt;br /&gt;
[[Image:Competencies_evidence_add_edit.png|thumb|400px|Mockup of the Add / edit competency evidence admin page with Example 1 competencies]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; will be use this page to view / add / edit evidence for a competency. The top of the page should display the existing general data for the competency, the number of &amp;quot;students&amp;quot; who have achieved the competency, and a table showing data and functionality for each evidence item:&lt;br /&gt;
* The name of the competency evidence (which links to the evidence item in context, e.g., the course if course completion is specified, etc)&lt;br /&gt;
* The type of evidence &lt;br /&gt;
* The activity (if the evidence is an activity outcome or activity grade)&lt;br /&gt;
* The weight of the evidence&lt;br /&gt;
* Options to edit or remove the evidence&lt;br /&gt;
* The number of &amp;quot;students&amp;quot; who have achieved the evidence&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;Add new competency evidence&amp;quot; button should link to the &amp;quot;Add new competency evidence&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Competencies summary&amp;quot; user profile page==&lt;br /&gt;
&lt;br /&gt;
[[Image:Competencies_user_profile_activity.png|thumb|400px|Mockup of user profile page with Example 1 competencies]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;student&amp;quot; or a user with permission to view a student&#039;s competencies will be able to view the proficiency status for each competency as a table with the following columns:&lt;br /&gt;
* Competency depth(s)&lt;br /&gt;
* Evidence items&lt;br /&gt;
* Proficiency&lt;br /&gt;
* Scale&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Allow competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
# Allow competencies to be tagged (in a folksonomy) using Moodle&#039;s tag/lib.&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14383</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14383"/>
		<updated>2009-08-21T01:06:59Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: Ideas for the future: removed two ideas related to IDP and course completion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to map related competencies on a given depth level&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define custom info fields on a given depth level&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure&lt;br /&gt;
#** Expanding/collapsing competencies&lt;br /&gt;
#** Sorting/searching/filtering by competency meta data&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Linking competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;within a course&#039;&#039;:&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency and a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student measured proficiencies related to evidence in his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (via either their personal profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using scale values.&lt;br /&gt;
&lt;br /&gt;
Example scales:&lt;br /&gt;
 &amp;quot;Average-based scale&amp;quot;&lt;br /&gt;
 &amp;quot;Competency-based scale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scale values&#039;&#039;&#039;: Descriptor or numeric values that comprise a scale. A scale value can have a id number (code) and description.&lt;br /&gt;
&lt;br /&gt;
Example scales values (with descriptors and numerical values) for the scale examples above:&lt;br /&gt;
 &amp;quot;Below average [1], Average [2], Above average [3]&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=User interface=&lt;br /&gt;
&lt;br /&gt;
==Site Administration block==&lt;br /&gt;
When competencies are enabled, a &amp;quot;Competencies&amp;quot; menu item should appear in the Site Administration block. An &amp;quot;Add / edit competencies&amp;quot; option should appear when &amp;quot;Competencies&amp;quot; is clicked. The &amp;quot;Add / edit competencies&amp;quot; will point to the &amp;quot;Add / edit competencies&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Add/edit competencies&amp;quot; admin page==&lt;br /&gt;
[[Image:Competencies_add_edit_default.png|thumb|400px|Mockup of the Add/edit competencies admin page (default)]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Competencies_add_edit.png|thumb|400px|Mockup of the Add/edit competencies admin page (with competencies from Example 1 framework)]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; can use this page to add and edit competencies and competency depth levels, using buttons and features available in a table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Buttons&#039;&#039;&#039;&lt;br /&gt;
* An &amp;quot;Add a new competency&amp;quot; button will link to the &amp;quot;Add a competency&amp;quot; admin page.&lt;br /&gt;
* An &amp;quot;Add a new depth level&amp;quot; button will link to the &amp;quot;Add a depth level&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table rows&#039;&#039;&#039;&lt;br /&gt;
* A &amp;quot;plus&amp;quot; / &amp;quot;minus&amp;quot; icon will appear on the right of each row in the table, allowing all child competencies to be shown or hidden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table columns&#039;&#039;&#039;&lt;br /&gt;
* A default, top-level competency depth named &amp;quot;Competency&amp;quot; will appear in a table as a column on the left. The default competency depth name can be changed (e.g., &amp;quot;Competency Area&amp;quot;, &amp;quot;Standard&amp;quot;, &amp;quot;Development Area&amp;quot;, etc).&lt;br /&gt;
* When a new competency depth is added, it will appear as column to the right of the next highest competency depth level.&lt;br /&gt;
* Appearing to the right of the competency depth level columns will be the following &amp;quot;standard&amp;quot; interface columns: &amp;quot;Evidence items&amp;quot;, &amp;quot;Edit&amp;quot;, and &amp;quot;Move competency to&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Below are more specifics on the table columns and content:&lt;br /&gt;
* &#039;&#039;[Competency depth level 0 name]&#039;&#039;, &#039;&#039;[Competency depth level 1 name]&#039;&#039;, &#039;&#039;[Competency depth level 2 name]&#039;&#039;, ... &#039;&#039;[Competency depth level n name]&#039;&#039;&lt;br /&gt;
** Columns of depth levels will be ordered from highest/top-level (on the left) to the lowest (on the right).&lt;br /&gt;
** An edit icon will appear beside each competency depth name, and will link to the &amp;quot;Edit competency depth&amp;quot; page (which will allow an &amp;quot;admin&amp;quot; to change the name of the competency depth name).&lt;br /&gt;
** The competency name will be displayed, and will link to a page containing meta data and possibly summary proficiency achievement stats about the competency.&lt;br /&gt;
* &#039;&#039;Evidence item&#039;&#039;&lt;br /&gt;
** By default the number of evidence items will be &amp;quot;0&amp;quot;. The number shown will link to the &amp;quot;Add / edit evidence items&amp;quot; admin page for the given competency.&lt;br /&gt;
* &#039;&#039;Edit&#039;&#039;&lt;br /&gt;
** Three icons appear providing the following functionality:&lt;br /&gt;
*** &amp;quot;edit&amp;quot; icon points to the &amp;quot;Edit competency&amp;quot; page for the competency&lt;br /&gt;
*** &amp;quot;delete&amp;quot; icon points to a confirmation page for deleting the competency&lt;br /&gt;
*** &amp;quot;up&amp;quot; / &amp;quot;down&amp;quot; icons will appear beside child competencies when a parent has two or more child competencies. A competency can only be moved up or down with respect to a parent competency.Only the down arrow will appear for the highest child competency, and only the up arrow will appear for the lowest child competency.&lt;br /&gt;
* &#039;&#039;Move competency to&#039;&#039;&lt;br /&gt;
** A drop down menu appears containing all parent competencies at the next highest depth. &lt;br /&gt;
** Competencies can only be moved from one parent to another parent in the same depth level.&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Add / edit a competency&amp;quot; admin page==&lt;br /&gt;
[[Image:Competencies_add.png|thumb|400px|Mockup of the Add competencies admin page]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; will be use this page to add or edit a new competency, with the following settings:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;General settings&#039;&#039;&lt;br /&gt;
* Parent competency&lt;br /&gt;
* Competency full name&lt;br /&gt;
* Competency short name&lt;br /&gt;
* Competency ID number&lt;br /&gt;
* Description&lt;br /&gt;
* Aggregation method&lt;br /&gt;
* Scale&lt;br /&gt;
* Proficiency expected&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom depth level settings&#039;&#039;&lt;br /&gt;
* Form elements based on custom fields for selected depth level (based on the parent competency)&lt;br /&gt;
* Changing the selected parent competency should update the custom fields shown, if the depth level of the parent changes&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Add / edit competency depth&amp;quot; admin page==&lt;br /&gt;
[[Image:Competencies_depth_add.png|thumb|400px|Mockup of the Add competency depth admin page]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; will be use this page to add / edit a new competency depth, with the following settings:&lt;br /&gt;
* Depth full name&lt;br /&gt;
* Depth short name&lt;br /&gt;
* Description&lt;br /&gt;
&lt;br /&gt;
Also, the depth level will be displayed&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Add / edit competency evidence&amp;quot; admin page==&lt;br /&gt;
[[Image:Competencies_evidence_add_edit.png|thumb|400px|Mockup of the Add / edit competency evidence admin page with Example 1 competencies]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; will be use this page to view / add / edit evidence for a competency. The top of the page should display the existing general data for the competency, the number of &amp;quot;students&amp;quot; who have achieved the competency, and a table showing data and functionality for each evidence item:&lt;br /&gt;
* The name of the competency evidence (which links to the evidence item in context, e.g., the course if course completion is specified, etc)&lt;br /&gt;
* The type of evidence &lt;br /&gt;
* The activity (if the evidence is an activity outcome or activity grade)&lt;br /&gt;
* The weight of the evidence&lt;br /&gt;
* Options to edit or remove the evidence&lt;br /&gt;
* The number of &amp;quot;students&amp;quot; who have achieved the evidence&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Competencies summary&amp;quot; user profile page==&lt;br /&gt;
&lt;br /&gt;
[[Image:Competencies_user_profile_activity.png|thumb|400px|Mockup of user profile page with Example 1 competencies]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;student&amp;quot; or a user with permission to view a student&#039;s competencies will be able to view the proficiency status for each competency as a table with the following columns:&lt;br /&gt;
* Competency depth(s)&lt;br /&gt;
* Evidence items&lt;br /&gt;
* Proficiency&lt;br /&gt;
* Scale&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Allow competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
# Allow competencies to be tagged (in a folksonomy) using Moodle&#039;s tag/lib.&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14382</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14382"/>
		<updated>2009-08-21T00:49:12Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: User interface: Added &amp;quot;Competencies summary&amp;quot; user profile page mockup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to map related competencies on a given depth level&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define custom info fields on a given depth level&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure&lt;br /&gt;
#** Expanding/collapsing competencies&lt;br /&gt;
#** Sorting/searching/filtering by competency meta data&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Linking competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;within a course&#039;&#039;:&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency and a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student measured proficiencies related to evidence in his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (via either their personal profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using scale values.&lt;br /&gt;
&lt;br /&gt;
Example scales:&lt;br /&gt;
 &amp;quot;Average-based scale&amp;quot;&lt;br /&gt;
 &amp;quot;Competency-based scale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scale values&#039;&#039;&#039;: Descriptor or numeric values that comprise a scale. A scale value can have a id number (code) and description.&lt;br /&gt;
&lt;br /&gt;
Example scales values (with descriptors and numerical values) for the scale examples above:&lt;br /&gt;
 &amp;quot;Below average [1], Average [2], Above average [3]&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=User interface=&lt;br /&gt;
&lt;br /&gt;
==Site Administration block==&lt;br /&gt;
When competencies are enabled, a &amp;quot;Competencies&amp;quot; menu item should appear in the Site Administration block. An &amp;quot;Add / edit competencies&amp;quot; option should appear when &amp;quot;Competencies&amp;quot; is clicked. The &amp;quot;Add / edit competencies&amp;quot; will point to the &amp;quot;Add / edit competencies&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Add/edit competencies&amp;quot; admin page==&lt;br /&gt;
[[Image:Competencies_add_edit_default.png|thumb|400px|Mockup of the Add/edit competencies admin page (default)]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Competencies_add_edit.png|thumb|400px|Mockup of the Add/edit competencies admin page (with competencies from Example 1 framework)]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; can use this page to add and edit competencies and competency depth levels, using buttons and features available in a table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Buttons&#039;&#039;&#039;&lt;br /&gt;
* An &amp;quot;Add a new competency&amp;quot; button will link to the &amp;quot;Add a competency&amp;quot; admin page.&lt;br /&gt;
* An &amp;quot;Add a new depth level&amp;quot; button will link to the &amp;quot;Add a depth level&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table rows&#039;&#039;&#039;&lt;br /&gt;
* A &amp;quot;plus&amp;quot; / &amp;quot;minus&amp;quot; icon will appear on the right of each row in the table, allowing all child competencies to be shown or hidden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table columns&#039;&#039;&#039;&lt;br /&gt;
* A default, top-level competency depth named &amp;quot;Competency&amp;quot; will appear in a table as a column on the left. The default competency depth name can be changed (e.g., &amp;quot;Competency Area&amp;quot;, &amp;quot;Standard&amp;quot;, &amp;quot;Development Area&amp;quot;, etc).&lt;br /&gt;
* When a new competency depth is added, it will appear as column to the right of the next highest competency depth level.&lt;br /&gt;
* Appearing to the right of the competency depth level columns will be the following &amp;quot;standard&amp;quot; interface columns: &amp;quot;Evidence items&amp;quot;, &amp;quot;Edit&amp;quot;, and &amp;quot;Move competency to&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Below are more specifics on the table columns and content:&lt;br /&gt;
* &#039;&#039;[Competency depth level 0 name]&#039;&#039;, &#039;&#039;[Competency depth level 1 name]&#039;&#039;, &#039;&#039;[Competency depth level 2 name]&#039;&#039;, ... &#039;&#039;[Competency depth level n name]&#039;&#039;&lt;br /&gt;
** Columns of depth levels will be ordered from highest/top-level (on the left) to the lowest (on the right).&lt;br /&gt;
** An edit icon will appear beside each competency depth name, and will link to the &amp;quot;Edit competency depth&amp;quot; page (which will allow an &amp;quot;admin&amp;quot; to change the name of the competency depth name).&lt;br /&gt;
** The competency name will be displayed, and will link to a page containing meta data and possibly summary proficiency achievement stats about the competency.&lt;br /&gt;
* &#039;&#039;Evidence item&#039;&#039;&lt;br /&gt;
** By default the number of evidence items will be &amp;quot;0&amp;quot;. The number shown will link to the &amp;quot;Add / edit evidence items&amp;quot; admin page for the given competency.&lt;br /&gt;
* &#039;&#039;Edit&#039;&#039;&lt;br /&gt;
** Three icons appear providing the following functionality:&lt;br /&gt;
*** &amp;quot;edit&amp;quot; icon points to the &amp;quot;Edit competency&amp;quot; page for the competency&lt;br /&gt;
*** &amp;quot;delete&amp;quot; icon points to a confirmation page for deleting the competency&lt;br /&gt;
*** &amp;quot;up&amp;quot; / &amp;quot;down&amp;quot; icons will appear beside child competencies when a parent has two or more child competencies. A competency can only be moved up or down with respect to a parent competency.Only the down arrow will appear for the highest child competency, and only the up arrow will appear for the lowest child competency.&lt;br /&gt;
* &#039;&#039;Move competency to&#039;&#039;&lt;br /&gt;
** A drop down menu appears containing all parent competencies at the next highest depth. &lt;br /&gt;
** Competencies can only be moved from one parent to another parent in the same depth level.&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Add / edit a competency&amp;quot; admin page==&lt;br /&gt;
[[Image:Competencies_add.png|thumb|400px|Mockup of the Add competencies admin page]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; will be use this page to add or edit a new competency, with the following settings:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;General settings&#039;&#039;&lt;br /&gt;
* Parent competency&lt;br /&gt;
* Competency full name&lt;br /&gt;
* Competency short name&lt;br /&gt;
* Competency ID number&lt;br /&gt;
* Description&lt;br /&gt;
* Aggregation method&lt;br /&gt;
* Scale&lt;br /&gt;
* Proficiency expected&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom depth level settings&#039;&#039;&lt;br /&gt;
* Form elements based on custom fields for selected depth level (based on the parent competency)&lt;br /&gt;
* Changing the selected parent competency should update the custom fields shown, if the depth level of the parent changes&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Add / edit competency depth&amp;quot; admin page==&lt;br /&gt;
[[Image:Competencies_depth_add.png|thumb|400px|Mockup of the Add competency depth admin page]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; will be use this page to add / edit a new competency depth, with the following settings:&lt;br /&gt;
* Depth full name&lt;br /&gt;
* Depth short name&lt;br /&gt;
* Description&lt;br /&gt;
&lt;br /&gt;
Also, the depth level will be displayed&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Add / edit competency evidence&amp;quot; admin page==&lt;br /&gt;
[[Image:Competencies_evidence_add_edit.png|thumb|400px|Mockup of the Add / edit competency evidence admin page with Example 1 competencies]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; will be use this page to view / add / edit evidence for a competency. The top of the page should display the existing general data for the competency, the number of &amp;quot;students&amp;quot; who have achieved the competency, and a table showing data and functionality for each evidence item:&lt;br /&gt;
* The name of the competency evidence (which links to the evidence item in context, e.g., the course if course completion is specified, etc)&lt;br /&gt;
* The type of evidence &lt;br /&gt;
* The activity (if the evidence is an activity outcome or activity grade)&lt;br /&gt;
* The weight of the evidence&lt;br /&gt;
* Options to edit or remove the evidence&lt;br /&gt;
* The number of &amp;quot;students&amp;quot; who have achieved the evidence&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Competencies summary&amp;quot; user profile page==&lt;br /&gt;
&lt;br /&gt;
[[Image:Competencies_user_profile_activity.png|thumb|400px|Mockup of user profile page with Example 1 competencies]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;student&amp;quot; or a user with permission to view a student&#039;s competencies will be able to view the proficiency status for each competency as a table with the following columns:&lt;br /&gt;
* Competency depth(s)&lt;br /&gt;
* Evidence items&lt;br /&gt;
* Proficiency&lt;br /&gt;
* Scale&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
# Allow competencies to be tagged (in a folksonomy) using Moodle&#039;s tag/lib.&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14381</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14381"/>
		<updated>2009-08-21T00:44:04Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: User interface: Normalised page titles&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to map related competencies on a given depth level&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define custom info fields on a given depth level&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure&lt;br /&gt;
#** Expanding/collapsing competencies&lt;br /&gt;
#** Sorting/searching/filtering by competency meta data&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Linking competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;within a course&#039;&#039;:&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency and a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student measured proficiencies related to evidence in his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (via either their personal profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using scale values.&lt;br /&gt;
&lt;br /&gt;
Example scales:&lt;br /&gt;
 &amp;quot;Average-based scale&amp;quot;&lt;br /&gt;
 &amp;quot;Competency-based scale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scale values&#039;&#039;&#039;: Descriptor or numeric values that comprise a scale. A scale value can have a id number (code) and description.&lt;br /&gt;
&lt;br /&gt;
Example scales values (with descriptors and numerical values) for the scale examples above:&lt;br /&gt;
 &amp;quot;Below average [1], Average [2], Above average [3]&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=User interface=&lt;br /&gt;
&lt;br /&gt;
==Site Administration block==&lt;br /&gt;
When competencies are enabled, a &amp;quot;Competencies&amp;quot; menu item should appear in the Site Administration block. An &amp;quot;Add / edit competencies&amp;quot; option should appear when &amp;quot;Competencies&amp;quot; is clicked. The &amp;quot;Add / edit competencies&amp;quot; will point to the &amp;quot;Add / edit competencies&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Add/edit competencies&amp;quot; admin page==&lt;br /&gt;
[[Image:Competencies_add_edit_default.png|thumb|400px|Mockup of the Add/edit competencies admin page (default)]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Competencies_add_edit.png|thumb|400px|Mockup of the Add/edit competencies admin page (with competencies from Example 1 framework)]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; can use this page to add and edit competencies and competency depth levels, using buttons and features available in a table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Buttons&#039;&#039;&#039;&lt;br /&gt;
* An &amp;quot;Add a new competency&amp;quot; button will link to the &amp;quot;Add a competency&amp;quot; admin page.&lt;br /&gt;
* An &amp;quot;Add a new depth level&amp;quot; button will link to the &amp;quot;Add a depth level&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table rows&#039;&#039;&#039;&lt;br /&gt;
* A &amp;quot;plus&amp;quot; / &amp;quot;minus&amp;quot; icon will appear on the right of each row in the table, allowing all child competencies to be shown or hidden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table columns&#039;&#039;&#039;&lt;br /&gt;
* A default, top-level competency depth named &amp;quot;Competency&amp;quot; will appear in a table as a column on the left. The default competency depth name can be changed (e.g., &amp;quot;Competency Area&amp;quot;, &amp;quot;Standard&amp;quot;, &amp;quot;Development Area&amp;quot;, etc).&lt;br /&gt;
* When a new competency depth is added, it will appear as column to the right of the next highest competency depth level.&lt;br /&gt;
* Appearing to the right of the competency depth level columns will be the following &amp;quot;standard&amp;quot; interface columns: &amp;quot;Evidence items&amp;quot;, &amp;quot;Edit&amp;quot;, and &amp;quot;Move competency to&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Below are more specifics on the table columns and content:&lt;br /&gt;
* &#039;&#039;[Competency depth level 0 name]&#039;&#039;, &#039;&#039;[Competency depth level 1 name]&#039;&#039;, &#039;&#039;[Competency depth level 2 name]&#039;&#039;, ... &#039;&#039;[Competency depth level n name]&#039;&#039;&lt;br /&gt;
** Columns of depth levels will be ordered from highest/top-level (on the left) to the lowest (on the right).&lt;br /&gt;
** An edit icon will appear beside each competency depth name, and will link to the &amp;quot;Edit competency depth&amp;quot; page (which will allow an &amp;quot;admin&amp;quot; to change the name of the competency depth name).&lt;br /&gt;
** The competency name will be displayed, and will link to a page containing meta data and possibly summary proficiency achievement stats about the competency.&lt;br /&gt;
* &#039;&#039;Evidence item&#039;&#039;&lt;br /&gt;
** By default the number of evidence items will be &amp;quot;0&amp;quot;. The number shown will link to the &amp;quot;Add / edit evidence items&amp;quot; admin page for the given competency.&lt;br /&gt;
* &#039;&#039;Edit&#039;&#039;&lt;br /&gt;
** Three icons appear providing the following functionality:&lt;br /&gt;
*** &amp;quot;edit&amp;quot; icon points to the &amp;quot;Edit competency&amp;quot; page for the competency&lt;br /&gt;
*** &amp;quot;delete&amp;quot; icon points to a confirmation page for deleting the competency&lt;br /&gt;
*** &amp;quot;up&amp;quot; / &amp;quot;down&amp;quot; icons will appear beside child competencies when a parent has two or more child competencies. A competency can only be moved up or down with respect to a parent competency.Only the down arrow will appear for the highest child competency, and only the up arrow will appear for the lowest child competency.&lt;br /&gt;
* &#039;&#039;Move competency to&#039;&#039;&lt;br /&gt;
** A drop down menu appears containing all parent competencies at the next highest depth. &lt;br /&gt;
** Competencies can only be moved from one parent to another parent in the same depth level.&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Add / edit a competency&amp;quot; admin page==&lt;br /&gt;
[[Image:Competencies_add.png|thumb|400px|Mockup of the Add competencies admin page]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; will be use this page to add or edit a new competency, with the following settings:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;General settings&#039;&#039;&lt;br /&gt;
* Parent competency&lt;br /&gt;
* Competency full name&lt;br /&gt;
* Competency short name&lt;br /&gt;
* Competency ID number&lt;br /&gt;
* Description&lt;br /&gt;
* Aggregation method&lt;br /&gt;
* Scale&lt;br /&gt;
* Proficiency expected&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom depth level settings&#039;&#039;&lt;br /&gt;
* Form elements based on custom fields for selected depth level (based on the parent competency)&lt;br /&gt;
* Changing the selected parent competency should update the custom fields shown, if the depth level of the parent changes&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Add / edit competency depth&amp;quot; admin page==&lt;br /&gt;
[[Image:Competencies_depth_add.png|thumb|400px|Mockup of the Add competency depth admin page]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; will be use this page to add / edit a new competency depth, with the following settings:&lt;br /&gt;
* Depth full name&lt;br /&gt;
* Depth short name&lt;br /&gt;
* Description&lt;br /&gt;
&lt;br /&gt;
Also, the depth level will be displayed&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Add / edit competency evidence&amp;quot; admin page==&lt;br /&gt;
[[Image:Competencies_evidence_add_edit.png|thumb|400px|Mockup of the Add / edit competency evidence admin page with Example 1 competencies]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; will be use this page to view / add / edit evidence for a competency. The top of the page should display the existing general data for the competency, the number of &amp;quot;students&amp;quot; who have achieved the competency, and a table showing data and functionality for each evidence item:&lt;br /&gt;
* The name of the competency evidence (which links to the evidence item in context, e.g., the course if course completion is specified, etc)&lt;br /&gt;
* The type of evidence &lt;br /&gt;
* The activity (if the evidence is an activity outcome or activity grade)&lt;br /&gt;
* The weight of the evidence&lt;br /&gt;
* Options to edit or remove the evidence&lt;br /&gt;
* The number of &amp;quot;students&amp;quot; who have achieved the evidence&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
# Allow competencies to be tagged (in a folksonomy) using Moodle&#039;s tag/lib.&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Course_completion&amp;diff=8811</id>
		<title>Course completion</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Course_completion&amp;diff=8811"/>
		<updated>2009-08-20T05:37:07Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: User (site) profile: added mock-up and additional spec details&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;This is a SPECIFICATION for a feature in Moodle 2.0 that is still under development&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: MDL-2631 Course credits and tracking of student&#039;s completion&lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: [http://moodle.org/mod/forum/discuss.php?d=126016 http://moodle.org/mod/forum/discuss.php?d=126016]&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Course_completion]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]], [[Aaron Barnes]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
We need to flag when the &amp;quot;student&amp;quot; has finished a course. :-)&lt;br /&gt;
&lt;br /&gt;
We need to allow several types of criteria to determine how a &amp;quot;student&amp;quot; can complete a course:&lt;br /&gt;
* &#039;&#039;&#039;Manual self completion&#039;&#039;&#039;: A &amp;quot;student&amp;quot; can mark her/himself complete a course.&lt;br /&gt;
* &#039;&#039;&#039;Manual completion by&#039;&#039;&#039;: An &amp;quot;admin&amp;quot;, &amp;quot;teacher&amp;quot;, &amp;quot;tutor&amp;quot;, etc can mark a student complete for a course.&lt;br /&gt;
* &#039;&#039;&#039;Activity completion&#039;&#039;&#039;: A &amp;quot;student&amp;quot; completes an activity, building on [https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] developed for 2.0 by Sam Marshall from OU.&lt;br /&gt;
* &#039;&#039;&#039;Course grade&#039;&#039;&#039;: A &amp;quot;student&amp;quot; meets or exceeds a passing grade in the course.&lt;br /&gt;
* &#039;&#039;&#039;Date&#039;&#039;&#039;: After a specified date all &amp;quot;students&amp;quot; are marked as completed in a course.&lt;br /&gt;
* &#039;&#039;&#039;Duration after enrolment&#039;&#039;&#039;: After a specified about of time after enrolment (e.g., 12 weeks), a &amp;quot;student&amp;quot; is automatically marked as complete in a course.&lt;br /&gt;
* &#039;&#039;&#039;Unenrol&#039;&#039;&#039;: After being unenroled, a &amp;quot;student&amp;quot; is marked complete for the course. Useful for external enrolment plugins.&lt;br /&gt;
&lt;br /&gt;
We need to record when and how a &amp;quot;student&amp;quot; meets each criteria in a course.&lt;br /&gt;
&lt;br /&gt;
We need to regularly aggregate the results for the criteria, measure progress, and check to see if a &amp;quot;student&amp;quot; has completed a course.&lt;br /&gt;
&lt;br /&gt;
We need to show:&lt;br /&gt;
* A &amp;quot;student&amp;quot; the necessary criteria to complete a course&lt;br /&gt;
* A &amp;quot;student&amp;quot; how s/he is progressing in a course along the necessary criteria&lt;br /&gt;
* A &amp;quot;teacher&amp;quot; how his/her students are progressing in a course and which students have completed it&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable completion tracking&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page) for activity completion. We need to change the setting&#039;s name and add another setting for course completion.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Rename the setting &amp;quot;Enable activity completion tracking&amp;quot; (the setting will continue to allow activity completion to be enabled in all courses)&lt;br /&gt;
* Create a new setting named &amp;quot;Enable course completion tracking&amp;quot; (the setting will allow course completion to be enabled in all courses)&lt;br /&gt;
&lt;br /&gt;
==Course settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides a fieldset (named &amp;quot;Student progress&amp;quot;) which contains a setting (named &amp;quot;Completion tracking&amp;quot;) which enables/disables activity completion in a course. We need to rename the setting to describe activity completion and add a setting to enable course completion.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Enable completion tracking&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page) for activity completion. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Rename the setting &amp;quot;Completion tracking&amp;quot; to &amp;quot;Activity completion tracking&amp;quot; (the setting will continue to make activity completion features available in the courses)&lt;br /&gt;
* Create a new setting named &amp;quot;Course completion tracking&amp;quot; (the setting will make course completion features available in the course)&lt;br /&gt;
&lt;br /&gt;
==Course completion settings==&lt;br /&gt;
When course completion is enabled in a course (see above), a menu item labeled &amp;quot;Completion&amp;quot; will appear in the course Administration block on the main course page. When a user clicks on the &amp;quot;Completion&amp;quot; link, the course completion admin page will display the criteria described below and in the mockup also below:&lt;br /&gt;
&lt;br /&gt;
[[Image:Edit_course_completion_settings.png|thumb|600px|Edit course completion settings]]&lt;br /&gt;
&lt;br /&gt;
===Criteria enabling===&lt;br /&gt;
We need to allow criteria to be enabled.&lt;br /&gt;
&lt;br /&gt;
We need some rules about enabled criteria in a course:&lt;br /&gt;
* Each criteria (e.g., &amp;quot;Manual self completion&amp;quot;, &amp;quot;Manual completion by&amp;quot;, etc) can be enabled&lt;br /&gt;
* By default, all criteria are not enabled&lt;br /&gt;
&lt;br /&gt;
===Criteria aggregation===&lt;br /&gt;
We need to define overall aggregation methods for the criteria type. We also need to a consistent set of aggregation methods for criteria types which have more than one possible option to determine an individual user&#039;s course completion:&lt;br /&gt;
* &amp;quot;Manual completion by&amp;quot; // more than one role can be enabled to determine if a student has completed the course&lt;br /&gt;
* &amp;quot;Activity completed&amp;quot; // more than one activity completion can be selected to determine if a student has completed the course&lt;br /&gt;
&lt;br /&gt;
Aggregation methods:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Method&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Required to complete the criteria type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Example&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;All&#039;&#039;&#039;&lt;br /&gt;
|All of the enabled child criteria must be completed&lt;br /&gt;
|Not applicable&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Any&#039;&#039;&#039;&lt;br /&gt;
|Any one (1) of the enabled child criteria must be completed&lt;br /&gt;
|Not applicable&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Fraction&#039;&#039;&#039;&lt;br /&gt;
|A fraction of the enabled child criteria must be completed&lt;br /&gt;
|0.25,0.5,0.9&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Units&#039;&#039;&#039;&lt;br /&gt;
|A specified number of the enabled child criteria must be completed &lt;br /&gt;
|2,3,4&lt;br /&gt;
|A unit of 1 is equivalent to &#039;any&#039;. A unit equal to the number of enabled child criteria is equivalent to &#039;all&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Criteria types===&lt;br /&gt;
====Manual self-completion====&lt;br /&gt;
&#039;&#039;&#039;Action:&#039;&#039;&#039;&lt;br /&gt;
* A &amp;quot;student&amp;quot; can manually indicate that s/he has completed a course via the course&#039;s [https://docs.moodle.org/en/Development:Course_completion#Block Completion progress block].&lt;br /&gt;
&#039;&#039;&#039;Tracked:&#039;&#039;&#039;&lt;br /&gt;
* The day/time when the &amp;quot;student&amp;quot; marked him/herself complete.&lt;br /&gt;
&lt;br /&gt;
====Manual completion by====&lt;br /&gt;
&#039;&#039;&#039;Action:&#039;&#039;&#039; &lt;br /&gt;
* A user assigned to the role in the course will see a checkbox in the [https://docs.moodle.org/en/Development:Course_completion#Report Completion progress report], which will allow him/her to manually &amp;quot;Mark complete&amp;quot; each applicable student enrolled in the course.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tracked:&#039;&#039;&#039;&lt;br /&gt;
* The roleid of the user who marked the &amp;quot;student&amp;quot; complete.&lt;br /&gt;
* The userid of the user who marked the &amp;quot;student&amp;quot; complete.&lt;br /&gt;
* The day/time when the user marked the &amp;quot;student&amp;quot; as complete in the course.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
# The Completion progress report will respect:&lt;br /&gt;
#* &#039;&#039;&#039;Separate groups:&#039;&#039;&#039; A &amp;quot;teacher&amp;quot; will only be able to see and mark complete students in her/his group(s) if separate groups is enabled.&lt;br /&gt;
#* &#039;&#039;&#039;Role assignments on the USER-level context:&#039;&#039;&#039; A &amp;quot;Tutor&amp;quot; or &amp;quot;Mentor&amp;quot; will only be able to see and mark complete users assigned to him/her.&lt;br /&gt;
# The criteria can be met only once by the role:&lt;br /&gt;
#* If more than one user is assigned to the role and has the capability of marking the user complete&lt;br /&gt;
#* After a &amp;quot;student&amp;quot; has been marked complete one time by a user in the role, the [https://docs.moodle.org/en/Development:Course_completion#Report Completion progress report] will not provide a checkbox in the &amp;quot;Mark complete&amp;quot; column when viewed by any user in the role in the course.&lt;br /&gt;
# We really be relying on role capabilities and permissions for this.&lt;br /&gt;
&lt;br /&gt;
====Activities completed====&lt;br /&gt;
&#039;&#039;&#039;Action:&#039;&#039;&#039; &lt;br /&gt;
* A &amp;quot;student&amp;quot; will meet the criteria when completing the specified activity, per the activity&#039;s &#039;Activity Completion&#039; settings.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tracked:&#039;&#039;&#039; &lt;br /&gt;
* The cmid, module type, and activity/resource name for each activity.&lt;br /&gt;
* The day/time when the criteria was detected as complete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;&lt;br /&gt;
# The list of activities/resources will contain:&lt;br /&gt;
#* Each activity/resource in the course with &amp;quot;Completion tracking&amp;quot; enabled within the activity/resource.&lt;br /&gt;
#* The type of each activity followed by the activity name (i.e., &amp;quot;[mod name] - [activity/resource name]&amp;quot;). See the mockup on this page (or for a basic example: &amp;quot;Quiz - Derivatives&amp;quot;).&lt;br /&gt;
# If &amp;quot;Activity completion&amp;quot; is not enabled for the site, the &amp;quot;Activities completed&amp;quot; field set will not appear on the page.&lt;br /&gt;
# If &amp;quot;Activity completion&amp;quot; is enabled for the site and not enabled for the course, the &amp;quot;Activities completed&amp;quot; field set will appear and it will only contain this message:&lt;br /&gt;
#:&#039;&#039;&amp;quot;Activity completion must be enabled for this course.&amp;quot;&#039;&#039;&lt;br /&gt;
# If &amp;quot;Activity completion&amp;quot; is enabled for the site and course, and there are no activities in the course, the &amp;quot;Activities completed&amp;quot; field set will appear and it will only contain this message:&lt;br /&gt;
#:&#039;&#039;&amp;quot;Currently, there are no activities in this course&amp;quot;&#039;&#039;&lt;br /&gt;
# If &amp;quot;Activity completion&amp;quot; is enabled for the site and course, and there are activities but none have activity completion enabled, the &amp;quot;Activities completed&amp;quot; field set will appear and it will only contain this message:&lt;br /&gt;
#:&#039;&#039;&amp;quot;Currently, none of the activities in this course have defined activity completion settings.&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Course grade====&lt;br /&gt;
&#039;&#039;&#039;Action:&#039;&#039;&#039; &lt;br /&gt;
* A &amp;quot;student&amp;quot; will meet the criteria when earning a total course grade above the passing grade.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tracked:&#039;&#039;&#039; &lt;br /&gt;
* The day/time when the user&#039;s course grade was evaluated as having exceeded the passing grade.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;&lt;br /&gt;
* The passing grade can also be updated via the course&#039;s &amp;quot;Grade to pass&amp;quot; setting found in the Grader report&#039;s edit page for the top level category for the course.&lt;br /&gt;
* Once a student has completed the course, both the &amp;quot;Passing grade&amp;quot; setting on the course page and the &amp;quot;Grade to pass&amp;quot; setting in the top level category for the course will be locked. A message about locking will appear on the settings page for the top level category for the course.&lt;br /&gt;
&lt;br /&gt;
====Date====&lt;br /&gt;
&#039;&#039;&#039;Action:&#039;&#039;&#039; &lt;br /&gt;
* A &amp;quot;student&amp;quot; enroled in the course will automatically meet the criteria after a specified date.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tracked:&#039;&#039;&#039; &lt;br /&gt;
* The day/time when specified day was evaluated as having passed.&lt;br /&gt;
&lt;br /&gt;
====Duration after enrolment====&lt;br /&gt;
&#039;&#039;&#039;Action:&#039;&#039;&#039; &lt;br /&gt;
* A &amp;quot;student&amp;quot; will meet the criteria after the specified number of days after his/her enrolment.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tracked:&#039;&#039;&#039; &lt;br /&gt;
* The day/time when the &amp;quot;student&amp;quot; marked him/herself complete.&lt;br /&gt;
&lt;br /&gt;
====Unenrolment====&lt;br /&gt;
&#039;&#039;&#039;Action:&#039;&#039;&#039; &lt;br /&gt;
* A &amp;quot;student&amp;quot; will meet the criteria when being unenroled from the course.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tracked:&#039;&#039;&#039;&lt;br /&gt;
* The day/time when the &amp;quot;student&amp;quot; was unenroled from the course.&lt;br /&gt;
&lt;br /&gt;
===Notifications===&lt;br /&gt;
====Enable====&lt;br /&gt;
If enabled, a &amp;quot;student&amp;quot; will receive notification when s/he has completed the course via the completion criteria.&lt;br /&gt;
&lt;br /&gt;
====Notify====&lt;br /&gt;
Users assigned to each selected role in the course will receive notification when each &amp;quot;student&amp;quot; completes the course.&lt;br /&gt;
&lt;br /&gt;
===Locking===&lt;br /&gt;
When the first student has completed the course, the course completion criteria settings will be locked. The course settings can be unlocked (via an &amp;quot;Unlock course completion options&amp;quot; button), however a warning message will be displayed stating that unlocking the settings requires deleting all prior course completion data for the course. Once the completion data is deleted, the settings become unlocked (i.e., un-greyed out).&lt;br /&gt;
&lt;br /&gt;
This is consistent with activity completion in 2.0, in which activity completion settings are locked when a user first completes an activity. Activity completion settings can be unlocked after all completion activity is deleted.&lt;br /&gt;
&lt;br /&gt;
==Activity settings==&lt;br /&gt;
If activity completion is enabled and activity completion is a criteria for course completion, then all activity completion settings will be locked once a student has completed the course. In this case, unlocking an activity&#039;s completion settings will require deleting both the activity&#039;s completion data and the course&#039;s completion data.&lt;br /&gt;
&lt;br /&gt;
If an activity is being tracked for course completion, we should add a warning/confirmation screen when an &amp;quot;admin&amp;quot; attempts to delete it. The message should say, &amp;quot;[Activity name] is currently a criteria for course completion. Are you sure you want to delete it?&amp;quot; [Delete anyway] / [Cancel]. If the &amp;quot;admin&amp;quot; confirms, the activity will be deleted however completion data for users who completed it will still remain tracked.&lt;br /&gt;
&lt;br /&gt;
Should the activity completion data remain?&lt;br /&gt;
Should the course completion data be re-aggregated?&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
[[Image:Course_completion_data_model.png|thumb|400px|Course completion data model]]&lt;br /&gt;
&lt;br /&gt;
===course===&lt;br /&gt;
The course table will require the following new fields. &#039;enablecompletion&#039; will now be used for activity and course completion:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Type&lt;br /&gt;
!Default &lt;br /&gt;
!Info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;completionnotify&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|Notify users when they complete this course&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===course_completion_aggregation_methods===&lt;br /&gt;
This new table will be populated with the aggregation method for &amp;quot;Overall criteria&amp;quot;, &amp;quot;Manual completion by&amp;quot;, and &amp;quot;Activities completed&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Type&lt;br /&gt;
!Default &lt;br /&gt;
!Info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;course&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the course that the course completion aggregation relates to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;criteriatype&#039;&#039;&#039;&lt;br /&gt;
|int(20)&lt;br /&gt;
|null&lt;br /&gt;
|The criteria type&#039;s integer constant (&#039;role&#039;, &#039;activity&#039;) or null if &#039;overall&#039; course aggregation. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;method&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|1&lt;br /&gt;
|&#039;1&#039;=&#039;all&#039;, &#039;2&#039;=&#039;any&#039;, &#039;3&#039;=&#039;fraction&#039;, &#039;4&#039;=&#039;unit&#039;.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;value&#039;&#039;&#039;&lt;br /&gt;
|number(10)&lt;br /&gt;
|null&lt;br /&gt;
|null for &#039;all&#039; and &#039;any&#039;, 0..1 for &#039;fraction&#039;, int &amp;gt; 0 for &#039;unit&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===course_completion_criteria===&lt;br /&gt;
This new table will be populated with each criteria in each course for course completion:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Type&lt;br /&gt;
!Default &lt;br /&gt;
!Info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;course&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the course that the course completion criteria relates to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemname&#039;&#039;&#039; (not implemented)&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|null&lt;br /&gt;
|The name of the item (e.g. &amp;quot;Mark yourself complete&amp;quot;, &amp;quot;Teacher marks you complete&amp;quot;, &amp;quot;[Activity name]&amp;quot;, &amp;quot;[postenrol] days after enrolment&amp;quot;, &amp;quot;Official Date: [date]&amp;quot;. Used for all item types except unenrol.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;criteriatype&#039;&#039;&#039;&lt;br /&gt;
|int(20)&lt;br /&gt;
|&lt;br /&gt;
|The criteria type&#039;s integer constant (&#039;self&#039;, &#039;role&#039;, &#039;mod&#039;, &#039;grade&#039;, &#039;enrolperiod&#039;, &#039;date&#039;, &#039;postenrol&#039;).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;module&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|null&lt;br /&gt;
|The name of the module (e.g., &#039;scorm&#039;, &#039;quiz&#039;, &#039;feedback&#039;). Used only if criteriatype=&#039;mod&#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;moduleinstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|null&lt;br /&gt;
|The id of the activity/resource module or role. Used only if criteriatype=&#039;mod&#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;enrolperiod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|null&lt;br /&gt;
|The number of seconds after enrolment. Used only if criteriatype=&#039;enrolperiod&#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;date&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|null&lt;br /&gt;
|The timestamp of the date for course completion. Used only if criteriatype=&#039;date&#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;gradepass&#039;&#039;&#039;&lt;br /&gt;
|number(10)&lt;br /&gt;
|null&lt;br /&gt;
|The course grade required to complete this criteria. Used only if criteriatype=&#039;grade&#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;role&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|null&lt;br /&gt;
|The role id that can mark &#039;student&#039;s as complete in the course. Used only if criteriatype=&#039;role&#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;lock&#039;&#039;&#039; (currently unused)&lt;br /&gt;
|int(10)&lt;br /&gt;
|null&lt;br /&gt;
|Date this criteria was locked&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===course_completion_criteria_completions===&lt;br /&gt;
This new table will be populated with records for each user as they complete each course completion criteria.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Type&lt;br /&gt;
!Default &lt;br /&gt;
!Info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user who has completed the course&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;course&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the completed course&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;criteriaid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the completion criteria this references&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;gradefinal&#039;&#039;&#039;&lt;br /&gt;
|number(10)&lt;br /&gt;
|null&lt;br /&gt;
|The final grade for the course (if referenced criteria type=&#039;grade&#039;).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;unenroled&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|null&lt;br /&gt;
|Timestamp when the user was unenroled (if referenced criteria type=&#039;unenrol&#039;).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;deleted&#039;&#039;&#039; (currently unused)&lt;br /&gt;
|int(1)&lt;br /&gt;
|null&lt;br /&gt;
|The course was deleted&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecompleted&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|null (should be notnull)&lt;br /&gt;
|Timestamp when the user completed the criteria&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===course_completion_notify===&lt;br /&gt;
This new table will be populated with the roles which should be notified for this course&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Type&lt;br /&gt;
!Default &lt;br /&gt;
!Info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;course&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the course that the condition applies to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;role&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the role that should be sent a notification when a course has been completed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;message&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|HTML formatted message to be sent to the user assigned to the role.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timesent&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the notification was sent&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===course_completions===&lt;br /&gt;
This new table will be populated with a record for a user when s/he meets course completion criteria selected/enabled for a course.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Type&lt;br /&gt;
!Default &lt;br /&gt;
!Info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user who has completed the course&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;course&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the completed course&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;deleted&#039;&#039;&#039; (currently unused)&lt;br /&gt;
|int(1)&lt;br /&gt;
|null&lt;br /&gt;
|The course was deleted&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timenotified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|null&lt;br /&gt;
|Timestamp when the user was notified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timeenroled&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp when the user enroled in the course&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecompleted&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|null (should be notnull)&lt;br /&gt;
|Timestamp when the user completed the course&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Evaluating completion=&lt;br /&gt;
Since the gradebook aggregation is performed via cron, it makes sense that course completion is also evaluated by cron.&lt;br /&gt;
&lt;br /&gt;
This creates an issue in which the progress block will not instantly not show course completion after the necessary criteria has been met by a &amp;quot;student&amp;quot;. However, this can be solved by adding some instructional text to say &amp;quot;may take a few minutes to update&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities=&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Feature&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Progress block&lt;br /&gt;
|Mark self-complete in progress block&lt;br /&gt;
|block/progress:markselfcomplete&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Progress report&lt;br /&gt;
|View course progress report&lt;br /&gt;
|coursereport/progress:view&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Progress report&lt;br /&gt;
|Mark users complete in course progress report&lt;br /&gt;
|coursereport/progress:markcomplete&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Course reporting=&lt;br /&gt;
==Completion progress report==&lt;br /&gt;
[[Image:Completion_report.png|thumb|600px|Course completion progress report]]&lt;br /&gt;
&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides a &amp;quot;Completion progress report&amp;quot;. The report can be found via on &amp;quot;Reports&amp;quot; menu item link in the course Administration block and when &amp;quot;Completion tracking&amp;quot; is enabled for the site and course.&lt;br /&gt;
&lt;br /&gt;
The report shows:&lt;br /&gt;
* A column for each of the activities/resources in the course with &amp;quot;Completion tracking&amp;quot; enabled&amp;quot;&lt;br /&gt;
* A row for each user enroled in the course&lt;br /&gt;
* The completion status for each activity&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Include in the report all enabled criteria for course completion (e.g., &amp;quot;Manual self completion&amp;quot;, &amp;quot;Manual completion by&amp;quot;, as well as the activities etc)&lt;br /&gt;
* Each user&#039;s status for completion of each criteria, indicated by a status icon&lt;br /&gt;
* Allow the completion admin page to determine which activities are shown in the report&lt;br /&gt;
* Allow the list of users to be sortable, searchable, and filterable (by group, groupings, and/or user profile fields).&lt;br /&gt;
* Allow user profile fields (standard and custom) can be added/removed as columns in the list.&lt;br /&gt;
* When rolling over the each icon, additional details (including the completion date) will display.&lt;br /&gt;
&lt;br /&gt;
See the mockup to the right with all course completion criteria appearing (i.e., all criteria types have been enabled in a course).&lt;br /&gt;
&lt;br /&gt;
As described further above, display rules for separate groups will apply. If separate groups is enabled for the course, a &amp;quot;teacher&amp;quot; will only see students and completion data for users in the group(s) that she/he is assigned to.&lt;br /&gt;
&lt;br /&gt;
Options for exporting completion data to CSV, ODF or Excel will be available. Completion dates will be included in the export.&lt;br /&gt;
&lt;br /&gt;
A column labeled &amp;quot;Mark complete&amp;quot; will appear containing a checkbox for each student if the user viewing the report is assigned to a role that is allowed to manually indicate that the students have completed the course.&lt;br /&gt;
&lt;br /&gt;
Not shown in the mockup, however we should display the specified values under the applicable heading in the report for each of the following feilds:&lt;br /&gt;
* Period after enrolment&lt;br /&gt;
* Passing grade&lt;br /&gt;
* Date (for completion)&lt;br /&gt;
&lt;br /&gt;
==Gradebook==&lt;br /&gt;
# If &amp;quot;Passing grade&amp;quot; is enabled as a criteria for course completion, a grader should have the option of seeing completion status (i.e., &amp;quot;complete&amp;quot; / &amp;quot;not complete&amp;quot;) as a column in the grader report.&lt;br /&gt;
# If a user assigned to a role that is enabled for &amp;quot;Manual completion by&amp;quot;, the user should have the option of manually indicating which students have completed the course, a &amp;quot;Mark complete&amp;quot; column will appear to the right of the &amp;quot;Course total&amp;quot; column with a checkbox for each student who has not yet completed the course.&lt;br /&gt;
&lt;br /&gt;
We should also provide an option to show course completion status in gradebook exports. Field options will include:&lt;br /&gt;
* Completion status (e.g., &amp;quot;Complete&amp;quot;, &amp;quot;Not complete&amp;quot;)&lt;br /&gt;
* Completion date&lt;br /&gt;
&lt;br /&gt;
==Completion progress block==&lt;br /&gt;
[[Image:Course_completion_progress_block.png|thumb|190px|Course completion progress block]]&lt;br /&gt;
&lt;br /&gt;
If completion is enabled for the site and a course, a completion block will be available to be added to the course.&lt;br /&gt;
&lt;br /&gt;
The block will allow a &amp;quot;student&amp;quot; to see:&lt;br /&gt;
* The completion criteria for completing the course&lt;br /&gt;
* His/her status for completion of each criteria (similar to the Completion progress report)&lt;br /&gt;
* His/her overall completion status for the course (complete / not complete)&lt;br /&gt;
&lt;br /&gt;
If all of the enabled criteria are required, the introduction text should say:&lt;br /&gt;
:&#039;&#039;&amp;quot;All of the criteria below needed&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If any of the enabled criteria are required, the introduction text should say:&lt;br /&gt;
:&#039;&#039;&amp;quot;Any of the criteria below needed&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If the current user can self complete the course, the block will provide an &amp;quot;I&#039;ve completed this course&amp;quot; button (if the user has not already marked him/herself complete).&lt;br /&gt;
&lt;br /&gt;
Activity completion criteria/status (if enabled for course completion) should be included in the block. See [http://tracker.moodle.org/browse/MDL-16466 MDL-16466] (&amp;quot;Activities on the course page do not convey to student that completion is expected or available for the activity&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
==User (course) profile==&lt;br /&gt;
Activity and course completion criteria/status data should appear in a user&#039;s &amp;quot;Outline report&amp;quot; and &amp;quot;Complete report&amp;quot; in the user profile area, which is being reworked for 2.0 separately from this spec.&lt;br /&gt;
&lt;br /&gt;
=Site reporting=&lt;br /&gt;
&lt;br /&gt;
==User (site) profile==&lt;br /&gt;
[[Image:Course_completion_user_profile_activity.png|thumb|400px|Mockup of the user profile page with Course completion report]]&lt;br /&gt;
&lt;br /&gt;
Activity and course completion criteria/status data should appear in a user&#039;s profile area.&lt;br /&gt;
&lt;br /&gt;
It would make sense for courses to be grouped by:&lt;br /&gt;
* Courses in progress&lt;br /&gt;
* Courses completed&lt;br /&gt;
* Courses not yet started&lt;br /&gt;
&lt;br /&gt;
For each course, the required criteria and status should appear.&lt;br /&gt;
&lt;br /&gt;
==My Moodle==&lt;br /&gt;
Activity and course completion criteria/status data should appear with the course and course activity listings. My Moodle is being reworked for 2.0 separately from this spec.&lt;br /&gt;
&lt;br /&gt;
=Cron=&lt;br /&gt;
A cron function will check the criteria and update the course_completion_completions table as necessary. Here&#039;s a breakdown of the tasks for each criteria, and will need to be optimised for performance and scalability across all courses:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Manual self completion:&#039;&#039;&#039; Cron not needed, performed directly from the Completion progress block.&lt;br /&gt;
* &#039;&#039;&#039;Manual completion by:&#039;&#039;&#039; Cron not needed, performed directly via the Completion progress report.&lt;br /&gt;
* &#039;&#039;&#039;Course grade:&#039;&#039;&#039; Compare the course grade to the passing grade.&lt;br /&gt;
* &#039;&#039;&#039;Unenrol:&#039;&#039;&#039; Compare course_completion-&amp;gt;unenroled to role_assignments-&amp;gt;timeend for the &amp;quot;student&amp;quot; role in the course.&lt;br /&gt;
* &#039;&#039;&#039;Date:&#039;&#039;&#039; Compare the current date to the specified date.&lt;br /&gt;
* &#039;&#039;&#039;Duration after enrolment:&#039;&#039;&#039; Compare the current date to the role_assignments-&amp;gt;timestart + the specified period after enrolment.&lt;br /&gt;
* &#039;&#039;&#039;Activity completion:&#039;&#039;&#039; Evaluate the necessary records in the course_modules_completion table.&lt;br /&gt;
* &#039;&#039;&#039;Course completion:&#039;&#039;&#039; Aggregate the necessary fields in course_completion table, updating the timecompleted field with the current timestamp if the user has met the necessary criteria.&lt;br /&gt;
* &#039;&#039;&#039;Notifications:&#039;&#039;&#039; Send out them out to the user (if enabled) and to users in the selected role.&lt;br /&gt;
&lt;br /&gt;
=Backup and restore=&lt;br /&gt;
* The new completion fields in the course table will be included in the backup.&lt;br /&gt;
* Entries in the course_completion_items, course_completion_aggregation_methods, and course_completion_notify tables for the course should also be included in the backup.&lt;br /&gt;
* When user data is included in a course backup, the backup will also include records in the course_completion_completions table for the course.&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14380</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14380"/>
		<updated>2009-08-20T01:49:54Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: User interface: Added &amp;quot;Add / edit comptency evidence&amp;quot; admin page spec and mockup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to map related competencies on a given depth level&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define custom info fields on a given depth level&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure&lt;br /&gt;
#** Expanding/collapsing competencies&lt;br /&gt;
#** Sorting/searching/filtering by competency meta data&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Linking competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;within a course&#039;&#039;:&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency and a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student measured proficiencies related to evidence in his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (via either their personal profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using scale values.&lt;br /&gt;
&lt;br /&gt;
Example scales:&lt;br /&gt;
 &amp;quot;Average-based scale&amp;quot;&lt;br /&gt;
 &amp;quot;Competency-based scale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scale values&#039;&#039;&#039;: Descriptor or numeric values that comprise a scale. A scale value can have a id number (code) and description.&lt;br /&gt;
&lt;br /&gt;
Example scales values (with descriptors and numerical values) for the scale examples above:&lt;br /&gt;
 &amp;quot;Below average [1], Average [2], Above average [3]&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=User interface=&lt;br /&gt;
&lt;br /&gt;
==Site Administration block==&lt;br /&gt;
When competencies are enabled, a &amp;quot;Competencies&amp;quot; menu item should appear in the Site Administration block. An &amp;quot;Add / edit competencies&amp;quot; option should appear when &amp;quot;Competencies&amp;quot; is clicked. The &amp;quot;Add / edit competencies&amp;quot; will point to the &amp;quot;Add / edit competencies&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
==Add/edit competencies admin page==&lt;br /&gt;
[[Image:Competencies_add_edit_default.png|thumb|400px|Mockup of the Add/edit competencies admin page (default)]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Competencies_add_edit.png|thumb|400px|Mockup of the Add/edit competencies admin page (with competencies from Example 1 framework)]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; can use this page to add and edit competencies and competency depth levels, using buttons and features available in a table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Buttons&#039;&#039;&#039;&lt;br /&gt;
* An &amp;quot;Add a new competency&amp;quot; button will link to the &amp;quot;Add a competency&amp;quot; admin page.&lt;br /&gt;
* An &amp;quot;Add a new depth level&amp;quot; button will link to the &amp;quot;Add a depth level&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table rows&#039;&#039;&#039;&lt;br /&gt;
* A &amp;quot;plus&amp;quot; / &amp;quot;minus&amp;quot; icon will appear on the right of each row in the table, allowing all child competencies to be shown or hidden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table columns&#039;&#039;&#039;&lt;br /&gt;
* A default, top-level competency depth named &amp;quot;Competency&amp;quot; will appear in a table as a column on the left. The default competency depth name can be changed (e.g., &amp;quot;Competency Area&amp;quot;, &amp;quot;Standard&amp;quot;, &amp;quot;Development Area&amp;quot;, etc).&lt;br /&gt;
* When a new competency depth is added, it will appear as column to the right of the next highest competency depth level.&lt;br /&gt;
* Appearing to the right of the competency depth level columns will be the following &amp;quot;standard&amp;quot; interface columns: &amp;quot;Evidence items&amp;quot;, &amp;quot;Edit&amp;quot;, and &amp;quot;Move competency to&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Below are more specifics on the table columns and content:&lt;br /&gt;
* &#039;&#039;[Competency depth level 0 name]&#039;&#039;, &#039;&#039;[Competency depth level 1 name]&#039;&#039;, &#039;&#039;[Competency depth level 2 name]&#039;&#039;, ... &#039;&#039;[Competency depth level n name]&#039;&#039;&lt;br /&gt;
** Columns of depth levels will be ordered from highest/top-level (on the left) to the lowest (on the right).&lt;br /&gt;
** An edit icon will appear beside each competency depth name, and will link to the &amp;quot;Edit competency depth&amp;quot; page (which will allow an &amp;quot;admin&amp;quot; to change the name of the competency depth name).&lt;br /&gt;
** The competency name will be displayed, and will link to a page containing meta data and possibly summary proficiency achievement stats about the competency.&lt;br /&gt;
* &#039;&#039;Evidence item&#039;&#039;&lt;br /&gt;
** By default the number of evidence items will be &amp;quot;0&amp;quot;. The number shown will link to the &amp;quot;Add / edit evidence items&amp;quot; admin page for the given competency.&lt;br /&gt;
* &#039;&#039;Edit&#039;&#039;&lt;br /&gt;
** Three icons appear providing the following functionality:&lt;br /&gt;
*** &amp;quot;edit&amp;quot; icon points to the &amp;quot;Edit competency&amp;quot; page for the competency&lt;br /&gt;
*** &amp;quot;delete&amp;quot; icon points to a confirmation page for deleting the competency&lt;br /&gt;
*** &amp;quot;up&amp;quot; / &amp;quot;down&amp;quot; icons will appear beside child competencies when a parent has two or more child competencies. A competency can only be moved up or down with respect to a parent competency.Only the down arrow will appear for the highest child competency, and only the up arrow will appear for the lowest child competency.&lt;br /&gt;
* &#039;&#039;Move competency to&#039;&#039;&lt;br /&gt;
** A drop down menu appears containing all parent competencies at the next highest depth. &lt;br /&gt;
** Competencies can only be moved from one parent to another parent in the same depth level.&lt;br /&gt;
&lt;br /&gt;
==Add a competency page==&lt;br /&gt;
[[Image:Competencies_add.png|thumb|400px|Mockup of the Add competencies admin page]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; will be use this page to add a new competency, with the following settings:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;General settings&#039;&#039;&lt;br /&gt;
* Parent competency&lt;br /&gt;
* Competency full name&lt;br /&gt;
* Competency short name&lt;br /&gt;
* Competency ID number&lt;br /&gt;
* Description&lt;br /&gt;
* Aggregation method&lt;br /&gt;
* Scale&lt;br /&gt;
* Proficiency expected&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom depth level settings&#039;&#039;&lt;br /&gt;
* Form elements based on custom fields for selected depth level (based on the parent competency)&lt;br /&gt;
* Changing the selected parent competency should update the custom fields shown, if the depth level of the parent changes&lt;br /&gt;
&lt;br /&gt;
==Add / edit a competency depth page==&lt;br /&gt;
[[Image:Competencies_depth_add.png|thumb|400px|Mockup of the Add competency depth admin page]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; will be use this page to add / edit a new competency depth, with the following settings:&lt;br /&gt;
* Depth full name&lt;br /&gt;
* Depth short name&lt;br /&gt;
* Description&lt;br /&gt;
&lt;br /&gt;
Also, the depth level will be displayed&lt;br /&gt;
&lt;br /&gt;
==Add / edit a competency evidence==&lt;br /&gt;
[[Image:Competencies_evidence_add_edit.png|thumb|400px|Mockup of the Add / edit competency evidence admin page with Example 1 competencies]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; will be use this page to view / add / edit evidence for a competency. The top of the page should display the existing general data for the competency, the number of &amp;quot;students&amp;quot; who have achieved the competency, and a table showing data and functionality for each evidence item:&lt;br /&gt;
* The name of the competency evidence (which links to the evidence item in context, e.g., the course if course completion is specified, etc)&lt;br /&gt;
* The type of evidence &lt;br /&gt;
* The activity (if the evidence is an activity outcome or activity grade)&lt;br /&gt;
* The weight of the evidence&lt;br /&gt;
* Options to edit or remove the evidence&lt;br /&gt;
* The number of &amp;quot;students&amp;quot; who have achieved the evidence&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
# Allow competencies to be tagged (in a folksonomy) using Moodle&#039;s tag/lib.&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14379</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14379"/>
		<updated>2009-08-20T01:24:52Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: User interface: Added &amp;quot;Add a comptency depth page&amp;quot; spec and mockup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to map related competencies on a given depth level&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define custom info fields on a given depth level&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure&lt;br /&gt;
#** Expanding/collapsing competencies&lt;br /&gt;
#** Sorting/searching/filtering by competency meta data&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Linking competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;within a course&#039;&#039;:&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency and a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student measured proficiencies related to evidence in his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (via either their personal profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using scale values.&lt;br /&gt;
&lt;br /&gt;
Example scales:&lt;br /&gt;
 &amp;quot;Average-based scale&amp;quot;&lt;br /&gt;
 &amp;quot;Competency-based scale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scale values&#039;&#039;&#039;: Descriptor or numeric values that comprise a scale. A scale value can have a id number (code) and description.&lt;br /&gt;
&lt;br /&gt;
Example scales values (with descriptors and numerical values) for the scale examples above:&lt;br /&gt;
 &amp;quot;Below average [1], Average [2], Above average [3]&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=User interface=&lt;br /&gt;
&lt;br /&gt;
==Site Administration block==&lt;br /&gt;
When competencies are enabled, a &amp;quot;Competencies&amp;quot; menu item should appear in the Site Administration block. An &amp;quot;Add / edit competencies&amp;quot; option should appear when &amp;quot;Competencies&amp;quot; is clicked. The &amp;quot;Add / edit competencies&amp;quot; will point to the &amp;quot;Add / edit competencies&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
==Add/edit competencies admin page==&lt;br /&gt;
[[Image:Competencies_add_edit_default.png|thumb|400px|Mockup of the Add/edit competencies admin page (default)]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Competencies_add_edit.png|thumb|400px|Mockup of the Add/edit competencies admin page (with competencies from Example 1 framework)]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; can use this page to add and edit competencies and competency depth levels, using buttons and features available in a table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Buttons&#039;&#039;&#039;&lt;br /&gt;
* An &amp;quot;Add a new competency&amp;quot; button will link to the &amp;quot;Add a competency&amp;quot; admin page.&lt;br /&gt;
* An &amp;quot;Add a new depth level&amp;quot; button will link to the &amp;quot;Add a depth level&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table rows&#039;&#039;&#039;&lt;br /&gt;
* A &amp;quot;plus&amp;quot; / &amp;quot;minus&amp;quot; icon will appear on the right of each row in the table, allowing all child competencies to be shown or hidden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table columns&#039;&#039;&#039;&lt;br /&gt;
* A default, top-level competency depth named &amp;quot;Competency&amp;quot; will appear in a table as a column on the left. The default competency depth name can be changed (e.g., &amp;quot;Competency Area&amp;quot;, &amp;quot;Standard&amp;quot;, &amp;quot;Development Area&amp;quot;, etc).&lt;br /&gt;
* When a new competency depth is added, it will appear as column to the right of the next highest competency depth level.&lt;br /&gt;
* Appearing to the right of the competency depth level columns will be the following &amp;quot;standard&amp;quot; interface columns: &amp;quot;Evidence items&amp;quot;, &amp;quot;Edit&amp;quot;, and &amp;quot;Move competency to&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Below are more specifics on the table columns and content:&lt;br /&gt;
* &#039;&#039;[Competency depth level 0 name]&#039;&#039;, &#039;&#039;[Competency depth level 1 name]&#039;&#039;, &#039;&#039;[Competency depth level 2 name]&#039;&#039;, ... &#039;&#039;[Competency depth level n name]&#039;&#039;&lt;br /&gt;
** Columns of depth levels will be ordered from highest/top-level (on the left) to the lowest (on the right).&lt;br /&gt;
** An edit icon will appear beside each competency depth name, and will link to the &amp;quot;Edit competency depth&amp;quot; page (which will allow an &amp;quot;admin&amp;quot; to change the name of the competency depth name).&lt;br /&gt;
** The competency name will be displayed, and will link to a page containing meta data and possibly summary proficiency achievement stats about the competency.&lt;br /&gt;
* &#039;&#039;Evidence item&#039;&#039;&lt;br /&gt;
** By default the number of evidence items will be &amp;quot;0&amp;quot;. The number shown will link to the &amp;quot;Add / edit evidence items&amp;quot; admin page for the given competency.&lt;br /&gt;
* &#039;&#039;Edit&#039;&#039;&lt;br /&gt;
** Three icons appear providing the following functionality:&lt;br /&gt;
*** &amp;quot;edit&amp;quot; icon points to the &amp;quot;Edit competency&amp;quot; page for the competency&lt;br /&gt;
*** &amp;quot;delete&amp;quot; icon points to a confirmation page for deleting the competency&lt;br /&gt;
*** &amp;quot;up&amp;quot; / &amp;quot;down&amp;quot; icons will appear beside child competencies when a parent has two or more child competencies. A competency can only be moved up or down with respect to a parent competency.Only the down arrow will appear for the highest child competency, and only the up arrow will appear for the lowest child competency.&lt;br /&gt;
* &#039;&#039;Move competency to&#039;&#039;&lt;br /&gt;
** A drop down menu appears containing all parent competencies at the next highest depth. &lt;br /&gt;
** Competencies can only be moved from one parent to another parent in the same depth level.&lt;br /&gt;
&lt;br /&gt;
==Add a competency page==&lt;br /&gt;
[[Image:Competencies_add.png|thumb|400px|Mockup of the Add competencies admin page]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; will be use this page to add a new competency, with the following settings:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;General settings&#039;&#039;&lt;br /&gt;
* Parent competency&lt;br /&gt;
* Competency full name&lt;br /&gt;
* Competency short name&lt;br /&gt;
* Competency ID number&lt;br /&gt;
* Description&lt;br /&gt;
* Aggregation method&lt;br /&gt;
* Scale&lt;br /&gt;
* Proficiency expected&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom depth level settings&#039;&#039;&lt;br /&gt;
* Form elements based on custom fields for selected depth level (based on the parent competency)&lt;br /&gt;
* Changing the selected parent competency should update the custom fields shown, if the depth level of the parent changes&lt;br /&gt;
&lt;br /&gt;
==Add / edit a competency depth page==&lt;br /&gt;
[[Image:Competencies_depth_add.png|thumb|400px|Mockup of the Add competency depth admin page]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; will be use this page to add / edit a new competency depth, with the following settings:&lt;br /&gt;
* Depth full name&lt;br /&gt;
* Depth short name&lt;br /&gt;
* Description&lt;br /&gt;
&lt;br /&gt;
Also, the depth level will be displayed&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
# Allow competencies to be tagged (in a folksonomy) using Moodle&#039;s tag/lib.&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14378</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14378"/>
		<updated>2009-08-20T01:02:51Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: User interface: moved &amp;quot;Add / edit competencies&amp;quot; mockups to the Add/edit competencies admin page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to map related competencies on a given depth level&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define custom info fields on a given depth level&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure&lt;br /&gt;
#** Expanding/collapsing competencies&lt;br /&gt;
#** Sorting/searching/filtering by competency meta data&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Linking competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;within a course&#039;&#039;:&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency and a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student measured proficiencies related to evidence in his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (via either their personal profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using scale values.&lt;br /&gt;
&lt;br /&gt;
Example scales:&lt;br /&gt;
 &amp;quot;Average-based scale&amp;quot;&lt;br /&gt;
 &amp;quot;Competency-based scale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scale values&#039;&#039;&#039;: Descriptor or numeric values that comprise a scale. A scale value can have a id number (code) and description.&lt;br /&gt;
&lt;br /&gt;
Example scales values (with descriptors and numerical values) for the scale examples above:&lt;br /&gt;
 &amp;quot;Below average [1], Average [2], Above average [3]&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=User interface=&lt;br /&gt;
&lt;br /&gt;
==Site Administration block==&lt;br /&gt;
When competencies are enabled, a &amp;quot;Competencies&amp;quot; menu item should appear in the Site Administration block. An &amp;quot;Add / edit competencies&amp;quot; option should appear when &amp;quot;Competencies&amp;quot; is clicked. The &amp;quot;Add / edit competencies&amp;quot; will point to the &amp;quot;Add / edit competencies&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
==Add/edit competencies admin page==&lt;br /&gt;
[[Image:Competencies_add_edit_default.png|thumb|400px|Mockup of the Add/edit competencies admin page (default)]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Competencies_add_edit.png|thumb|400px|Mockup of the Add/edit competencies admin page (with competencies from Example 1 framework)]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; can use this page to add and edit competencies and competency depth levels, using buttons and features available in a table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Buttons&#039;&#039;&#039;&lt;br /&gt;
* An &amp;quot;Add a new competency&amp;quot; button will link to the &amp;quot;Add a competency&amp;quot; admin page.&lt;br /&gt;
* An &amp;quot;Add a new depth level&amp;quot; button will link to the &amp;quot;Add a depth level&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table rows&#039;&#039;&#039;&lt;br /&gt;
* A &amp;quot;plus&amp;quot; / &amp;quot;minus&amp;quot; icon will appear on the right of each row in the table, allowing all child competencies to be shown or hidden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table columns&#039;&#039;&#039;&lt;br /&gt;
* A default, top-level competency depth named &amp;quot;Competency&amp;quot; will appear in a table as a column on the left. The default competency depth name can be changed (e.g., &amp;quot;Competency Area&amp;quot;, &amp;quot;Standard&amp;quot;, &amp;quot;Development Area&amp;quot;, etc).&lt;br /&gt;
* When a new competency depth is added, it will appear as column to the right of the next highest competency depth level.&lt;br /&gt;
* Appearing to the right of the competency depth level columns will be the following &amp;quot;standard&amp;quot; interface columns: &amp;quot;Evidence items&amp;quot;, &amp;quot;Edit&amp;quot;, and &amp;quot;Move competency to&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Below are more specifics on the table columns and content:&lt;br /&gt;
* &#039;&#039;[Competency depth level 0 name]&#039;&#039;, &#039;&#039;[Competency depth level 1 name]&#039;&#039;, &#039;&#039;[Competency depth level 2 name]&#039;&#039;, ... &#039;&#039;[Competency depth level n name]&#039;&#039;&lt;br /&gt;
** Columns of depth levels will be ordered from highest/top-level (on the left) to the lowest (on the right).&lt;br /&gt;
** An edit icon will appear beside each competency depth name, and will link to the &amp;quot;Edit competency depth&amp;quot; page (which will allow an &amp;quot;admin&amp;quot; to change the name of the competency depth name).&lt;br /&gt;
** The competency name will be displayed, and will link to a page containing meta data and possibly summary proficiency achievement stats about the competency.&lt;br /&gt;
* &#039;&#039;Evidence item&#039;&#039;&lt;br /&gt;
** By default the number of evidence items will be &amp;quot;0&amp;quot;. The number shown will link to the &amp;quot;Add / edit evidence items&amp;quot; admin page for the given competency.&lt;br /&gt;
* &#039;&#039;Edit&#039;&#039;&lt;br /&gt;
** Three icons appear providing the following functionality:&lt;br /&gt;
*** &amp;quot;edit&amp;quot; icon points to the &amp;quot;Edit competency&amp;quot; page for the competency&lt;br /&gt;
*** &amp;quot;delete&amp;quot; icon points to a confirmation page for deleting the competency&lt;br /&gt;
*** &amp;quot;up&amp;quot; / &amp;quot;down&amp;quot; icons will appear beside child competencies when a parent has two or more child competencies. A competency can only be moved up or down with respect to a parent competency.Only the down arrow will appear for the highest child competency, and only the up arrow will appear for the lowest child competency.&lt;br /&gt;
* &#039;&#039;Move competency to&#039;&#039;&lt;br /&gt;
** A drop down menu appears containing all parent competencies at the next highest depth. &lt;br /&gt;
** Competencies can only be moved from one parent to another parent in the same depth level.&lt;br /&gt;
&lt;br /&gt;
==Add a competency page==&lt;br /&gt;
[[Image:Competencies_add.png|thumb|400px|Mockup of the Add competencies admin page]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; will be use this page to add a new competency, with the following settings:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;General settings&#039;&#039;&lt;br /&gt;
* Parent competency&lt;br /&gt;
* Competency full name&lt;br /&gt;
* Competency short name&lt;br /&gt;
* Competency ID number&lt;br /&gt;
* Description&lt;br /&gt;
* Aggregation method&lt;br /&gt;
* Scale&lt;br /&gt;
* Proficiency expected&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom depth level settings&#039;&#039;&lt;br /&gt;
* Form elements based on custom fields for selected depth level (based on the parent competency)&lt;br /&gt;
* Changing the selected parent competency should update the custom fields shown, if the depth level of the parent changes&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
# Allow competencies to be tagged (in a folksonomy) using Moodle&#039;s tag/lib.&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14377</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14377"/>
		<updated>2009-08-20T01:01:35Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: User interface: Edited caption on &amp;quot;Add/edit competency admin page&amp;quot; mockup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to map related competencies on a given depth level&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define custom info fields on a given depth level&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure&lt;br /&gt;
#** Expanding/collapsing competencies&lt;br /&gt;
#** Sorting/searching/filtering by competency meta data&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Linking competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;within a course&#039;&#039;:&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency and a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student measured proficiencies related to evidence in his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (via either their personal profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using scale values.&lt;br /&gt;
&lt;br /&gt;
Example scales:&lt;br /&gt;
 &amp;quot;Average-based scale&amp;quot;&lt;br /&gt;
 &amp;quot;Competency-based scale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scale values&#039;&#039;&#039;: Descriptor or numeric values that comprise a scale. A scale value can have a id number (code) and description.&lt;br /&gt;
&lt;br /&gt;
Example scales values (with descriptors and numerical values) for the scale examples above:&lt;br /&gt;
 &amp;quot;Below average [1], Average [2], Above average [3]&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=User interface=&lt;br /&gt;
&lt;br /&gt;
==Site Administration block==&lt;br /&gt;
&lt;br /&gt;
[[Image:Competencies_add_edit_default.png|thumb|400px|Mockup of the Add/edit competencies admin page (default)]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Competencies_add_edit.png|thumb|400px|Mockup of the Add/edit competencies admin page (with competencies from Example 1 framework)]]&lt;br /&gt;
&lt;br /&gt;
When competencies are enabled, a &amp;quot;Competencies&amp;quot; menu item should appear in the Site Administration block. An &amp;quot;Add / edit competencies&amp;quot; option should appear when &amp;quot;Competencies&amp;quot; is clicked. The &amp;quot;Add / edit competencies&amp;quot; will point to the &amp;quot;Add / edit competencies&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
==Add/edit competencies admin page==&lt;br /&gt;
An &amp;quot;admin&amp;quot; can use this page to add and edit competencies and competency depth levels, using buttons and features available in a table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Buttons&#039;&#039;&#039;&lt;br /&gt;
* An &amp;quot;Add a new competency&amp;quot; button will link to the &amp;quot;Add a competency&amp;quot; admin page.&lt;br /&gt;
* An &amp;quot;Add a new depth level&amp;quot; button will link to the &amp;quot;Add a depth level&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table rows&#039;&#039;&#039;&lt;br /&gt;
* A &amp;quot;plus&amp;quot; / &amp;quot;minus&amp;quot; icon will appear on the right of each row in the table, allowing all child competencies to be shown or hidden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table columns&#039;&#039;&#039;&lt;br /&gt;
* A default, top-level competency depth named &amp;quot;Competency&amp;quot; will appear in a table as a column on the left. The default competency depth name can be changed (e.g., &amp;quot;Competency Area&amp;quot;, &amp;quot;Standard&amp;quot;, &amp;quot;Development Area&amp;quot;, etc).&lt;br /&gt;
* When a new competency depth is added, it will appear as column to the right of the next highest competency depth level.&lt;br /&gt;
* Appearing to the right of the competency depth level columns will be the following &amp;quot;standard&amp;quot; interface columns: &amp;quot;Evidence items&amp;quot;, &amp;quot;Edit&amp;quot;, and &amp;quot;Move competency to&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Below are more specifics on the table columns and content:&lt;br /&gt;
* &#039;&#039;[Competency depth level 0 name]&#039;&#039;, &#039;&#039;[Competency depth level 1 name]&#039;&#039;, &#039;&#039;[Competency depth level 2 name]&#039;&#039;, ... &#039;&#039;[Competency depth level n name]&#039;&#039;&lt;br /&gt;
** Columns of depth levels will be ordered from highest/top-level (on the left) to the lowest (on the right).&lt;br /&gt;
** An edit icon will appear beside each competency depth name, and will link to the &amp;quot;Edit competency depth&amp;quot; page (which will allow an &amp;quot;admin&amp;quot; to change the name of the competency depth name).&lt;br /&gt;
** The competency name will be displayed, and will link to a page containing meta data and possibly summary proficiency achievement stats about the competency.&lt;br /&gt;
* &#039;&#039;Evidence item&#039;&#039;&lt;br /&gt;
** By default the number of evidence items will be &amp;quot;0&amp;quot;. The number shown will link to the &amp;quot;Add / edit evidence items&amp;quot; admin page for the given competency.&lt;br /&gt;
* &#039;&#039;Edit&#039;&#039;&lt;br /&gt;
** Three icons appear providing the following functionality:&lt;br /&gt;
*** &amp;quot;edit&amp;quot; icon points to the &amp;quot;Edit competency&amp;quot; page for the competency&lt;br /&gt;
*** &amp;quot;delete&amp;quot; icon points to a confirmation page for deleting the competency&lt;br /&gt;
*** &amp;quot;up&amp;quot; / &amp;quot;down&amp;quot; icons will appear beside child competencies when a parent has two or more child competencies. A competency can only be moved up or down with respect to a parent competency.Only the down arrow will appear for the highest child competency, and only the up arrow will appear for the lowest child competency.&lt;br /&gt;
* &#039;&#039;Move competency to&#039;&#039;&lt;br /&gt;
** A drop down menu appears containing all parent competencies at the next highest depth. &lt;br /&gt;
** Competencies can only be moved from one parent to another parent in the same depth level.&lt;br /&gt;
&lt;br /&gt;
==Add a competency page==&lt;br /&gt;
[[Image:Competencies_add.png|thumb|400px|Mockup of the Add competencies admin page]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; will be use this page to add a new competency, with the following settings:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;General settings&#039;&#039;&lt;br /&gt;
* Parent competency&lt;br /&gt;
* Competency full name&lt;br /&gt;
* Competency short name&lt;br /&gt;
* Competency ID number&lt;br /&gt;
* Description&lt;br /&gt;
* Aggregation method&lt;br /&gt;
* Scale&lt;br /&gt;
* Proficiency expected&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom depth level settings&#039;&#039;&lt;br /&gt;
* Form elements based on custom fields for selected depth level (based on the parent competency)&lt;br /&gt;
* Changing the selected parent competency should update the custom fields shown, if the depth level of the parent changes&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
# Allow competencies to be tagged (in a folksonomy) using Moodle&#039;s tag/lib.&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14376</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14376"/>
		<updated>2009-08-20T00:59:09Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: User interface: Added default &amp;quot;Add/edit competencoes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to map related competencies on a given depth level&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define custom info fields on a given depth level&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure&lt;br /&gt;
#** Expanding/collapsing competencies&lt;br /&gt;
#** Sorting/searching/filtering by competency meta data&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Linking competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;within a course&#039;&#039;:&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency and a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student measured proficiencies related to evidence in his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (via either their personal profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using scale values.&lt;br /&gt;
&lt;br /&gt;
Example scales:&lt;br /&gt;
 &amp;quot;Average-based scale&amp;quot;&lt;br /&gt;
 &amp;quot;Competency-based scale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scale values&#039;&#039;&#039;: Descriptor or numeric values that comprise a scale. A scale value can have a id number (code) and description.&lt;br /&gt;
&lt;br /&gt;
Example scales values (with descriptors and numerical values) for the scale examples above:&lt;br /&gt;
 &amp;quot;Below average [1], Average [2], Above average [3]&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=User interface=&lt;br /&gt;
&lt;br /&gt;
==Site Administration block==&lt;br /&gt;
&lt;br /&gt;
[[Image:Competencies_add_edit_default.png|thumb|400px|Mockup of the Add/edit competencies admin page (default)]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Competencies_add_edit.png|thumb|400px|Mockup of the Add/edit competencies admin page (with sample competencies)]]&lt;br /&gt;
&lt;br /&gt;
When competencies are enabled, a &amp;quot;Competencies&amp;quot; menu item should appear in the Site Administration block. An &amp;quot;Add / edit competencies&amp;quot; option should appear when &amp;quot;Competencies&amp;quot; is clicked. The &amp;quot;Add / edit competencies&amp;quot; will point to the &amp;quot;Add / edit competencies&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
==Add/edit competencies admin page==&lt;br /&gt;
An &amp;quot;admin&amp;quot; can use this page to add and edit competencies and competency depth levels, using buttons and features available in a table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Buttons&#039;&#039;&#039;&lt;br /&gt;
* An &amp;quot;Add a new competency&amp;quot; button will link to the &amp;quot;Add a competency&amp;quot; admin page.&lt;br /&gt;
* An &amp;quot;Add a new depth level&amp;quot; button will link to the &amp;quot;Add a depth level&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table rows&#039;&#039;&#039;&lt;br /&gt;
* A &amp;quot;plus&amp;quot; / &amp;quot;minus&amp;quot; icon will appear on the right of each row in the table, allowing all child competencies to be shown or hidden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table columns&#039;&#039;&#039;&lt;br /&gt;
* A default, top-level competency depth named &amp;quot;Competency&amp;quot; will appear in a table as a column on the left. The default competency depth name can be changed (e.g., &amp;quot;Competency Area&amp;quot;, &amp;quot;Standard&amp;quot;, &amp;quot;Development Area&amp;quot;, etc).&lt;br /&gt;
* When a new competency depth is added, it will appear as column to the right of the next highest competency depth level.&lt;br /&gt;
* Appearing to the right of the competency depth level columns will be the following &amp;quot;standard&amp;quot; interface columns: &amp;quot;Evidence items&amp;quot;, &amp;quot;Edit&amp;quot;, and &amp;quot;Move competency to&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Below are more specifics on the table columns and content:&lt;br /&gt;
* &#039;&#039;[Competency depth level 0 name]&#039;&#039;, &#039;&#039;[Competency depth level 1 name]&#039;&#039;, &#039;&#039;[Competency depth level 2 name]&#039;&#039;, ... &#039;&#039;[Competency depth level n name]&#039;&#039;&lt;br /&gt;
** Columns of depth levels will be ordered from highest/top-level (on the left) to the lowest (on the right).&lt;br /&gt;
** An edit icon will appear beside each competency depth name, and will link to the &amp;quot;Edit competency depth&amp;quot; page (which will allow an &amp;quot;admin&amp;quot; to change the name of the competency depth name).&lt;br /&gt;
** The competency name will be displayed, and will link to a page containing meta data and possibly summary proficiency achievement stats about the competency.&lt;br /&gt;
* &#039;&#039;Evidence item&#039;&#039;&lt;br /&gt;
** By default the number of evidence items will be &amp;quot;0&amp;quot;. The number shown will link to the &amp;quot;Add / edit evidence items&amp;quot; admin page for the given competency.&lt;br /&gt;
* &#039;&#039;Edit&#039;&#039;&lt;br /&gt;
** Three icons appear providing the following functionality:&lt;br /&gt;
*** &amp;quot;edit&amp;quot; icon points to the &amp;quot;Edit competency&amp;quot; page for the competency&lt;br /&gt;
*** &amp;quot;delete&amp;quot; icon points to a confirmation page for deleting the competency&lt;br /&gt;
*** &amp;quot;up&amp;quot; / &amp;quot;down&amp;quot; icons will appear beside child competencies when a parent has two or more child competencies. A competency can only be moved up or down with respect to a parent competency.Only the down arrow will appear for the highest child competency, and only the up arrow will appear for the lowest child competency.&lt;br /&gt;
* &#039;&#039;Move competency to&#039;&#039;&lt;br /&gt;
** A drop down menu appears containing all parent competencies at the next highest depth. &lt;br /&gt;
** Competencies can only be moved from one parent to another parent in the same depth level.&lt;br /&gt;
&lt;br /&gt;
==Add a competency page==&lt;br /&gt;
[[Image:Competencies_add.png|thumb|400px|Mockup of the Add competencies admin page]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; will be use this page to add a new competency, with the following settings:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;General settings&#039;&#039;&lt;br /&gt;
* Parent competency&lt;br /&gt;
* Competency full name&lt;br /&gt;
* Competency short name&lt;br /&gt;
* Competency ID number&lt;br /&gt;
* Description&lt;br /&gt;
* Aggregation method&lt;br /&gt;
* Scale&lt;br /&gt;
* Proficiency expected&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom depth level settings&#039;&#039;&lt;br /&gt;
* Form elements based on custom fields for selected depth level (based on the parent competency)&lt;br /&gt;
* Changing the selected parent competency should update the custom fields shown, if the depth level of the parent changes&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
# Allow competencies to be tagged (in a folksonomy) using Moodle&#039;s tag/lib.&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14375</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14375"/>
		<updated>2009-08-20T00:43:06Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: User interface: Added &amp;quot;Add a comptency admin page&amp;quot; spec&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to map related competencies on a given depth level&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define custom info fields on a given depth level&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure&lt;br /&gt;
#** Expanding/collapsing competencies&lt;br /&gt;
#** Sorting/searching/filtering by competency meta data&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Linking competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;within a course&#039;&#039;:&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency and a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student measured proficiencies related to evidence in his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (via either their personal profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using scale values.&lt;br /&gt;
&lt;br /&gt;
Example scales:&lt;br /&gt;
 &amp;quot;Average-based scale&amp;quot;&lt;br /&gt;
 &amp;quot;Competency-based scale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scale values&#039;&#039;&#039;: Descriptor or numeric values that comprise a scale. A scale value can have a id number (code) and description.&lt;br /&gt;
&lt;br /&gt;
Example scales values (with descriptors and numerical values) for the scale examples above:&lt;br /&gt;
 &amp;quot;Below average [1], Average [2], Above average [3]&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=User interface=&lt;br /&gt;
&lt;br /&gt;
==Site Administration block==&lt;br /&gt;
[[Image:Competencies_add_edit.png|thumb|400px|Mockup of the Add/edit competencies admin page]]&lt;br /&gt;
&lt;br /&gt;
When competencies are enabled, a &amp;quot;Competencies&amp;quot; menu item should appear in the Site Administration block. An &amp;quot;Add / edit competencies&amp;quot; option should appear when &amp;quot;Competencies&amp;quot; is clicked. The &amp;quot;Add / edit competencies&amp;quot; will point to the &amp;quot;Add / edit competencies&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
==Add/edit competencies admin page==&lt;br /&gt;
An &amp;quot;admin&amp;quot; can use this page to add and edit competencies and competency depth levels, using buttons and features available in a table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Buttons&#039;&#039;&#039;&lt;br /&gt;
* An &amp;quot;Add a new competency&amp;quot; button will link to the &amp;quot;Add a competency&amp;quot; admin page.&lt;br /&gt;
* An &amp;quot;Add a new depth level&amp;quot; button will link to the &amp;quot;Add a depth level&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table rows&#039;&#039;&#039;&lt;br /&gt;
* A &amp;quot;plus&amp;quot; / &amp;quot;minus&amp;quot; icon will appear on the right of each row in the table, allowing all child competencies to be shown or hidden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table columns&#039;&#039;&#039;&lt;br /&gt;
* A default, top-level competency depth named &amp;quot;Competency&amp;quot; will appear in a table as a column on the left. The default competency depth name can be changed (e.g., &amp;quot;Competency Area&amp;quot;, &amp;quot;Standard&amp;quot;, &amp;quot;Development Area&amp;quot;, etc).&lt;br /&gt;
* When a new competency depth is added, it will appear as column to the right of the next highest competency depth level.&lt;br /&gt;
* Appearing to the right of the competency depth level columns will be the following &amp;quot;standard&amp;quot; interface columns: &amp;quot;Evidence items&amp;quot;, &amp;quot;Edit&amp;quot;, and &amp;quot;Move competency to&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Below are more specifics on the table columns and content:&lt;br /&gt;
* &#039;&#039;[Competency depth level 0 name]&#039;&#039;, &#039;&#039;[Competency depth level 1 name]&#039;&#039;, &#039;&#039;[Competency depth level 2 name]&#039;&#039;, ... &#039;&#039;[Competency depth level n name]&#039;&#039;&lt;br /&gt;
** Columns of depth levels will be ordered from highest/top-level (on the left) to the lowest (on the right).&lt;br /&gt;
** An edit icon will appear beside each competency depth name, and will link to the &amp;quot;Edit competency depth&amp;quot; page (which will allow an &amp;quot;admin&amp;quot; to change the name of the competency depth name).&lt;br /&gt;
** The competency name will be displayed, and will link to a page containing meta data and possibly summary proficiency achievement stats about the competency.&lt;br /&gt;
* &#039;&#039;Evidence item&#039;&#039;&lt;br /&gt;
** By default the number of evidence items will be &amp;quot;0&amp;quot;. The number shown will link to the &amp;quot;Add / edit evidence items&amp;quot; admin page for the given competency.&lt;br /&gt;
* &#039;&#039;Edit&#039;&#039;&lt;br /&gt;
** Three icons appear providing the following functionality:&lt;br /&gt;
*** &amp;quot;edit&amp;quot; icon points to the &amp;quot;Edit competency&amp;quot; page for the competency&lt;br /&gt;
*** &amp;quot;delete&amp;quot; icon points to a confirmation page for deleting the competency&lt;br /&gt;
*** &amp;quot;up&amp;quot; / &amp;quot;down&amp;quot; icons will appear beside child competencies when a parent has two or more child competencies. A competency can only be moved up or down with respect to a parent competency.Only the down arrow will appear for the highest child competency, and only the up arrow will appear for the lowest child competency.&lt;br /&gt;
* &#039;&#039;Move competency to&#039;&#039;&lt;br /&gt;
** A drop down menu appears containing all parent competencies at the next highest depth. &lt;br /&gt;
** Competencies can only be moved from one parent to another parent in the same depth level.&lt;br /&gt;
&lt;br /&gt;
==Add a competency page==&lt;br /&gt;
[[Image:Competencies_add.png|thumb|400px|Mockup of the Add competencies admin page]]&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;admin&amp;quot; will be use this page to add a new competency, with the following settings:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;General settings&#039;&#039;&lt;br /&gt;
* Parent competency&lt;br /&gt;
* Competency full name&lt;br /&gt;
* Competency short name&lt;br /&gt;
* Competency ID number&lt;br /&gt;
* Description&lt;br /&gt;
* Aggregation method&lt;br /&gt;
* Scale&lt;br /&gt;
* Proficiency expected&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom depth level settings&#039;&#039;&lt;br /&gt;
* Form elements based on custom fields for selected depth level (based on the parent competency)&lt;br /&gt;
* Changing the selected parent competency should update the custom fields shown, if the depth level of the parent changes&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
# Allow competencies to be tagged (in a folksonomy) using Moodle&#039;s tag/lib.&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14374</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14374"/>
		<updated>2009-08-19T01:05:26Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: /* User interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to map related competencies on a given depth level&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define custom info fields on a given depth level&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure&lt;br /&gt;
#** Expanding/collapsing competencies&lt;br /&gt;
#** Sorting/searching/filtering by competency meta data&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Linking competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;within a course&#039;&#039;:&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency and a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student measured proficiencies related to evidence in his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (via either their personal profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using scale values.&lt;br /&gt;
&lt;br /&gt;
Example scales:&lt;br /&gt;
 &amp;quot;Average-based scale&amp;quot;&lt;br /&gt;
 &amp;quot;Competency-based scale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scale values&#039;&#039;&#039;: Descriptor or numeric values that comprise a scale. A scale value can have a id number (code) and description.&lt;br /&gt;
&lt;br /&gt;
Example scales values (with descriptors and numerical values) for the scale examples above:&lt;br /&gt;
 &amp;quot;Below average [1], Average [2], Above average [3]&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=User interface=&lt;br /&gt;
[[Image:Competencies_add_edit.png|thumb|400px|Mockup of the Add/edit competencies admin page]]&lt;br /&gt;
&lt;br /&gt;
==Site Administration block==&lt;br /&gt;
When competencies are enabled, a &amp;quot;Competencies&amp;quot; menu item should appear in the Site Administration block. An &amp;quot;Add / edit competencies&amp;quot; option should appear when &amp;quot;Competencies&amp;quot; is clicked. The &amp;quot;Add / edit competencies&amp;quot; will point to the &amp;quot;Add / edit competencies&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
==Add/edit competencies admin page==&lt;br /&gt;
An &amp;quot;admin&amp;quot; can use this page to add and edit competencies and competency depth levels, using buttons and features available in a table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Buttons&#039;&#039;&#039;&lt;br /&gt;
* An &amp;quot;Add a new competency&amp;quot; button will link to the &amp;quot;Add a competency&amp;quot; admin page.&lt;br /&gt;
* An &amp;quot;Add a new depth level&amp;quot; button will link to the &amp;quot;Add a depth level&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table rows&#039;&#039;&#039;&lt;br /&gt;
* A &amp;quot;plus&amp;quot; / &amp;quot;minus&amp;quot; icon will appear on the right of each row in the table, allowing all child competencies to be shown or hidden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table columns&#039;&#039;&#039;&lt;br /&gt;
* A default, top-level competency depth named &amp;quot;Competency&amp;quot; will appear in a table as a column on the left. The default competency depth name can be changed (e.g., &amp;quot;Competency Area&amp;quot;, &amp;quot;Standard&amp;quot;, &amp;quot;Development Area&amp;quot;, etc).&lt;br /&gt;
* When a new competency depth is added, it will appear as column to the right of the next highest competency depth level.&lt;br /&gt;
* Appearing to the right of the competency depth level columns will be the following &amp;quot;standard&amp;quot; interface columns: &amp;quot;Evidence items&amp;quot;, &amp;quot;Edit&amp;quot;, and &amp;quot;Move competency to&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Below are more specifics on the table columns and content:&lt;br /&gt;
* &#039;&#039;[Competency depth level 0 name]&#039;&#039;, &#039;&#039;[Competency depth level 1 name]&#039;&#039;, &#039;&#039;[Competency depth level 2 name]&#039;&#039;, ... &#039;&#039;[Competency depth level n name]&#039;&#039;&lt;br /&gt;
** Columns of depth levels will be ordered from highest/top-level (on the left) to the lowest (on the right).&lt;br /&gt;
** An edit icon will appear beside each competency depth name, and will link to the &amp;quot;Edit competency depth&amp;quot; page (which will allow an &amp;quot;admin&amp;quot; to change the name of the competency depth name).&lt;br /&gt;
** The competency name will be displayed, and will link to a page containing meta data and possibly summary proficiency achievement stats about the competency.&lt;br /&gt;
* &#039;&#039;Evidence item&#039;&#039;&lt;br /&gt;
** By default the number of evidence items will be &amp;quot;0&amp;quot;. The number shown will link to the &amp;quot;Add / edit evidence items&amp;quot; admin page for the given competency.&lt;br /&gt;
* &#039;&#039;Edit&#039;&#039;&lt;br /&gt;
** Three icons appear providing the following functionality:&lt;br /&gt;
*** &amp;quot;edit&amp;quot; icon points to the &amp;quot;Edit competency&amp;quot; page for the competency&lt;br /&gt;
*** &amp;quot;delete&amp;quot; icon points to a confirmation page for deleting the competency&lt;br /&gt;
*** &amp;quot;up&amp;quot; / &amp;quot;down&amp;quot; icons will appear beside child competencies when a parent has two or more child competencies. A competency can only be moved up or down with respect to a parent competency.Only the down arrow will appear for the highest child competency, and only the up arrow will appear for the lowest child competency.&lt;br /&gt;
* &#039;&#039;Move competency to&#039;&#039;&lt;br /&gt;
** A drop down menu appears containing all parent competencies at the next highest depth. &lt;br /&gt;
** Competencies can only be moved from one parent to another parent in the same depth level.&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
# Allow competencies to be tagged (in a folksonomy) using Moodle&#039;s tag/lib.&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14373</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14373"/>
		<updated>2009-08-18T23:58:19Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: User interface: Added &amp;quot;Add/edit comptencies admin page&amp;quot; spec&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to map related competencies on a given depth level&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define custom info fields on a given depth level&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure&lt;br /&gt;
#** Expanding/collapsing competencies&lt;br /&gt;
#** Sorting/searching/filtering by competency meta data&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Linking competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;within a course&#039;&#039;:&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency and a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student measured proficiencies related to evidence in his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (via either their personal profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using scale values.&lt;br /&gt;
&lt;br /&gt;
Example scales:&lt;br /&gt;
 &amp;quot;Average-based scale&amp;quot;&lt;br /&gt;
 &amp;quot;Competency-based scale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scale values&#039;&#039;&#039;: Descriptor or numeric values that comprise a scale. A scale value can have a id number (code) and description.&lt;br /&gt;
&lt;br /&gt;
Example scales values (with descriptors and numerical values) for the scale examples above:&lt;br /&gt;
 &amp;quot;Below average [1], Average [2], Above average [3]&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=User interface=&lt;br /&gt;
[[Image:Competency_home.png|thumb|400px|Competencies in the Site Administration block]]&lt;br /&gt;
&lt;br /&gt;
==Site Administration block==&lt;br /&gt;
When competencies are enabled, a &amp;quot;Competencies&amp;quot; menu item should appear in the Site Administration block. An &amp;quot;Add / edit competencies&amp;quot; option should appear when &amp;quot;Competencies&amp;quot; is clicked. The &amp;quot;Add / edit competencies&amp;quot; will point to the &amp;quot;Add / edit competencies&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
==Add/edit competencies admin page==&lt;br /&gt;
An &amp;quot;admin&amp;quot; can use this page to add and edit competencies and competency depth levels, using buttons and features available in a table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Buttons&#039;&#039;&#039;&lt;br /&gt;
* An &amp;quot;Add a new competency&amp;quot; button will link to the &amp;quot;Add a competency&amp;quot; admin page.&lt;br /&gt;
* An &amp;quot;Add a new depth level&amp;quot; button will link to the &amp;quot;Add a depth level&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table rows&#039;&#039;&#039;&lt;br /&gt;
* A &amp;quot;plus&amp;quot; / &amp;quot;minus&amp;quot; icon will appear on the right of each row in the table, allowing all child competencies to be shown or hidden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Table columns&#039;&#039;&#039;&lt;br /&gt;
* A default, top-level competency depth named &amp;quot;Competency&amp;quot; will appear in a table as a column on the left. The default competency depth name can be changed (e.g., &amp;quot;Competency Area&amp;quot;, &amp;quot;Standard&amp;quot;, &amp;quot;Development Area&amp;quot;, etc).&lt;br /&gt;
* When a new competency depth is added, it will appear as column to the right of the next highest competency depth level.&lt;br /&gt;
* Appearing to the right of the competency depth level columns will be the following &amp;quot;standard&amp;quot; interface columns: &amp;quot;Evidence items&amp;quot;, &amp;quot;Edit&amp;quot;, and &amp;quot;Move competency to&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Below are more specifics on the table columns and content:&lt;br /&gt;
* &#039;&#039;[Competency depth level 0 name]&#039;&#039;, &#039;&#039;[Competency depth level 1 name]&#039;&#039;, &#039;&#039;[Competency depth level 2 name]&#039;&#039;, ... &#039;&#039;[Competency depth level n name]&#039;&#039;&lt;br /&gt;
** Columns of depth levels will be ordered from highest/top-level (on the left) to the lowest (on the right).&lt;br /&gt;
** An edit icon will appear beside each competency depth name, and will link to the &amp;quot;Edit competency depth&amp;quot; page (which will allow an &amp;quot;admin&amp;quot; to change the name of the competency depth name).&lt;br /&gt;
** The competency name will be displayed, and will link to a page containing meta data and possibly summary proficiency achievement stats about the competency.&lt;br /&gt;
* &#039;&#039;Evidence item&#039;&#039;&lt;br /&gt;
** By default the number of evidence items will be &amp;quot;0&amp;quot;. The number shown will link to the &amp;quot;Add / edit evidence items&amp;quot; admin page for the given competency.&lt;br /&gt;
* &#039;&#039;Edit&#039;&#039;&lt;br /&gt;
** Three icons appear providing the following functionality:&lt;br /&gt;
*** &amp;quot;edit&amp;quot; icon points to the &amp;quot;Edit competency&amp;quot; page for the competency&lt;br /&gt;
*** &amp;quot;delete&amp;quot; icon points to a confirmation page for deleting the competency&lt;br /&gt;
*** &amp;quot;up&amp;quot; / &amp;quot;down&amp;quot; icons will appear beside child competencies when a parent has two or more child competencies. A competency can only be moved up or down with respect to a parent competency.Only the down arrow will appear for the highest child competency, and only the up arrow will appear for the lowest child competency.&lt;br /&gt;
* &#039;&#039;Move competency to&#039;&#039;&lt;br /&gt;
** A drop down menu appears containing all parent competencies at the next highest depth. &lt;br /&gt;
** Competencies can only be moved from one parent to another parent in the same depth level.&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
# Allow competencies to be tagged (in a folksonomy) using Moodle&#039;s tag/lib.&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14372</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14372"/>
		<updated>2009-08-18T22:54:48Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: User interface: Site Administration block - added more detail&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to map related competencies on a given depth level&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define custom info fields on a given depth level&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure&lt;br /&gt;
#** Expanding/collapsing competencies&lt;br /&gt;
#** Sorting/searching/filtering by competency meta data&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Linking competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;within a course&#039;&#039;:&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency and a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student measured proficiencies related to evidence in his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (via either their personal profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using scale values.&lt;br /&gt;
&lt;br /&gt;
Example scales:&lt;br /&gt;
 &amp;quot;Average-based scale&amp;quot;&lt;br /&gt;
 &amp;quot;Competency-based scale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scale values&#039;&#039;&#039;: Descriptor or numeric values that comprise a scale. A scale value can have a id number (code) and description.&lt;br /&gt;
&lt;br /&gt;
Example scales values (with descriptors and numerical values) for the scale examples above:&lt;br /&gt;
 &amp;quot;Below average [1], Average [2], Above average [3]&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=User interface=&lt;br /&gt;
[[Image:Competency_home.png|thumb|400px|Competencies in the Site Administration block]]&lt;br /&gt;
&lt;br /&gt;
==Site Administration block==&lt;br /&gt;
When competencies are enabled, a &amp;quot;Competencies&amp;quot; menu item should appear in the Site Administration block. An &amp;quot;Add / edit competencies&amp;quot; option should appear when &amp;quot;Competencies&amp;quot; is clicked. The &amp;quot;Add / edit competencies&amp;quot; will point to the &amp;quot;Add / edit competencies&amp;quot; admin page.&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
# Allow competencies to be tagged (in a folksonomy) using Moodle&#039;s tag/lib.&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14371</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14371"/>
		<updated>2009-08-18T03:45:51Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: User Interface: Added new section and Site Admin block mockup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to map related competencies on a given depth level&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define custom info fields on a given depth level&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure&lt;br /&gt;
#** Expanding/collapsing competencies&lt;br /&gt;
#** Sorting/searching/filtering by competency meta data&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Linking competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;within a course&#039;&#039;:&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency and a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student measured proficiencies related to evidence in his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (via either their personal profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using scale values.&lt;br /&gt;
&lt;br /&gt;
Example scales:&lt;br /&gt;
 &amp;quot;Average-based scale&amp;quot;&lt;br /&gt;
 &amp;quot;Competency-based scale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scale values&#039;&#039;&#039;: Descriptor or numeric values that comprise a scale. A scale value can have a id number (code) and description.&lt;br /&gt;
&lt;br /&gt;
Example scales values (with descriptors and numerical values) for the scale examples above:&lt;br /&gt;
 &amp;quot;Below average [1], Average [2], Above average [3]&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=User interface=&lt;br /&gt;
[[Image:Competency_home.png|thumb|400px|Competencies in the Site Administration block]]&lt;br /&gt;
&lt;br /&gt;
=Site Administration block=&lt;br /&gt;
When competencies are enabled, a &amp;quot;Competencies&amp;quot; menu item should be available from the Site Administration block. &lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
# Allow competencies to be tagged (in a folksonomy) using Moodle&#039;s tag/lib.&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14370</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14370"/>
		<updated>2009-08-18T03:07:28Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: Definitions: Competency evidence type - removed course outcome, which can&amp;#039;t be evaluated&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to map related competencies on a given depth level&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define custom info fields on a given depth level&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure&lt;br /&gt;
#** Expanding/collapsing competencies&lt;br /&gt;
#** Sorting/searching/filtering by competency meta data&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Linking competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;within a course&#039;&#039;:&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency and a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student measured proficiencies related to evidence in his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (via either their personal profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using scale values.&lt;br /&gt;
&lt;br /&gt;
Example scales:&lt;br /&gt;
 &amp;quot;Average-based scale&amp;quot;&lt;br /&gt;
 &amp;quot;Competency-based scale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scale values&#039;&#039;&#039;: Descriptor or numeric values that comprise a scale. A scale value can have a id number (code) and description.&lt;br /&gt;
&lt;br /&gt;
Example scales values (with descriptors and numerical values) for the scale examples above:&lt;br /&gt;
 &amp;quot;Below average [1], Average [2], Above average [3]&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
# Allow competencies to be tagged (in a folksonomy) using Moodle&#039;s tag/lib.&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14369</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14369"/>
		<updated>2009-08-18T03:06:15Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: Definitions: competency -- removed reference to folksonomy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to map related competencies on a given depth level&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define custom info fields on a given depth level&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure&lt;br /&gt;
#** Expanding/collapsing competencies&lt;br /&gt;
#** Sorting/searching/filtering by competency meta data&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Linking competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;within a course&#039;&#039;:&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency and a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student measured proficiencies related to evidence in his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (via either their personal profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using scale values.&lt;br /&gt;
&lt;br /&gt;
Example scales:&lt;br /&gt;
 &amp;quot;Average-based scale&amp;quot;&lt;br /&gt;
 &amp;quot;Competency-based scale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scale values&#039;&#039;&#039;: Descriptor or numeric values that comprise a scale. A scale value can have a id number (code) and description.&lt;br /&gt;
&lt;br /&gt;
Example scales values (with descriptors and numerical values) for the scale examples above:&lt;br /&gt;
 &amp;quot;Below average [1], Average [2], Above average [3]&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
# Allow competencies to be tagged (in a folksonomy) using Moodle&#039;s tag/lib.&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14368</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14368"/>
		<updated>2009-08-18T03:05:23Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: Definitions: clarified scale and scale values (and examples)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to map related competencies on a given depth level&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define custom info fields on a given depth level&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure&lt;br /&gt;
#** Expanding/collapsing competencies&lt;br /&gt;
#** Sorting/searching/filtering by competency meta data&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Linking competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;within a course&#039;&#039;:&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency and a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student measured proficiencies related to evidence in his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (via either their personal profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using scale values.&lt;br /&gt;
&lt;br /&gt;
Example scales:&lt;br /&gt;
 &amp;quot;Average-based scale&amp;quot;&lt;br /&gt;
 &amp;quot;Competency-based scale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scale values&#039;&#039;&#039;: Descriptor or numeric values that comprise a scale. A scale value can have a id number (code) and description.&lt;br /&gt;
&lt;br /&gt;
Example scales values (with descriptors and numerical values) for the scale examples above:&lt;br /&gt;
 &amp;quot;Below average [1], Average [2], Above average [3]&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
# Allow competencies to be tagged (in a folksonomy) using Moodle&#039;s tag/lib.&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14367</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14367"/>
		<updated>2009-08-18T02:54:45Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: Goals: edited various other sections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to map related competencies on a given depth level&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define custom info fields on a given depth level&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure&lt;br /&gt;
#** Expanding/collapsing competencies&lt;br /&gt;
#** Sorting/searching/filtering by competency meta data&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Linking competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;within a course&#039;&#039;:&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency and a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student measured proficiencies related to evidence in his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (via either their personal profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
# Allow competencies to be tagged (in a folksonomy) using Moodle&#039;s tag/lib.&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14366</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14366"/>
		<updated>2009-08-18T02:49:43Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: Goals: edited linking competencies and evidence items&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to map related competencies on a given depth level&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define custom info fields on a given depth level&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure&lt;br /&gt;
#** Expanding/collapsing competencies&lt;br /&gt;
#** Sorting/searching/filtering by competency meta data&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Linking competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;within a course&#039;&#039;:&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
# Allow competencies to be tagged (in a folksonomy) using Moodle&#039;s tag/lib.&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14365</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14365"/>
		<updated>2009-08-18T02:47:52Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: Goals: edited &amp;#039;easy navigation&amp;#039; section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to map related competencies on a given depth level&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define custom info fields on a given depth level&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure&lt;br /&gt;
#** Expanding/collapsing competencies&lt;br /&gt;
#** Sorting/searching/filtering by competency meta data&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;in a course&#039;&#039;:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion of the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
# Allow competencies to be tagged (in a folksonomy) using Moodle&#039;s tag/lib.&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14364</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14364"/>
		<updated>2009-08-18T02:46:21Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: Goals: edited measured amount of abstraction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to map related competencies on a given depth level&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define custom info fields on a given depth level&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;in a course&#039;&#039;:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion of the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
# Allow competencies to be tagged (in a folksonomy) using Moodle&#039;s tag/lib.&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14363</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14363"/>
		<updated>2009-08-18T02:42:29Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: Goals: removed redundant goals related to parent-child and related competencies&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to describe competencies on a given depth level consistently with custom meta data fields and categories&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;in a course&#039;&#039;:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion of the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
# Allow competencies to be tagged (in a folksonomy) using Moodle&#039;s tag/lib.&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14362</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14362"/>
		<updated>2009-08-18T02:41:24Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: removed questions and questions categories as a competency evidence type&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify parent-child relations between competencies and related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to describe competencies on a given depth level consistently with custom meta data fields and categories&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;in a course&#039;&#039;:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion of the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
# Allow competencies to be tagged (in a folksonomy) using Moodle&#039;s tag/lib.&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14361</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14361"/>
		<updated>2009-08-18T02:39:27Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: Ideas for the future: added idea to allow competencies to be tagged&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify parent-child relations between competencies and related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to describe competencies on a given depth level consistently with custom meta data fields and categories&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;in a course&#039;&#039;:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion of the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 Question results&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;question/category&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, quiz_question_instance id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
# Allow competencies to be tagged (in a folksonomy) using Moodle&#039;s tag/lib.&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14360</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14360"/>
		<updated>2009-08-18T02:37:18Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: /* competency_depth_info_field */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify parent-child relations between competencies and related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to describe competencies on a given depth level consistently with custom meta data fields and categories&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;in a course&#039;&#039;:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion of the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 Question results&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency depth for the field. Foreign key to the competency_depth table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;question/category&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, quiz_question_instance id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14359</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14359"/>
		<updated>2009-08-18T02:35:29Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: /* competency_depth_info_field */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify parent-child relations between competencies and related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to describe competencies on a given depth level consistently with custom meta data fields and categories&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;in a course&#039;&#039;:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion of the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 Question results&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category. Foreign key to the competency_depth_info_category table&#039;s id field&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;question/category&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, quiz_question_instance id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14358</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14358"/>
		<updated>2009-08-18T02:32:56Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: Data structure: competency_depth table - added &amp;#039;level&amp;#039; field&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify parent-child relations between competencies and related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to describe competencies on a given depth level consistently with custom meta data fields and categories&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;in a course&#039;&#039;:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion of the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 Question results&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;level&#039;&#039;&#039;&lt;br /&gt;
|int(2)&lt;br /&gt;
|&lt;br /&gt;
|The actual depth level, starting at 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;question/category&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, quiz_question_instance id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14357</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14357"/>
		<updated>2009-08-18T02:31:23Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: Data structure: competency table edit - proficiencyexpected is a foreign key to a scale value&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify parent-child relations between competencies and related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to describe competencies on a given depth level consistently with custom meta data fields and categories&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;in a course&#039;&#039;:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion of the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 Question results&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, foreign key to the scale_value table&#039;s id&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;question/category&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, quiz_question_instance id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14356</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14356"/>
		<updated>2009-08-18T02:28:59Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: Data structure: competency table edit - changed &amp;#039;depth&amp;#039; field name to &amp;#039;depthid&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify parent-child relations between competencies and related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to describe competencies on a given depth level consistently with custom meta data fields and categories&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;in a course&#039;&#039;:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion of the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 Question results&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depthid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the depth level the competency belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, a value from the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;question/category&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, quiz_question_instance id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14355</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14355"/>
		<updated>2009-08-18T02:27:10Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: data structure: scale table needed a clearer description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify parent-child relations between competencies and related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to describe competencies on a given depth level consistently with custom meta data fields and categories&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;in a course&#039;&#039;:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion of the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 Question results&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
Scales (introduced in Moodle 1.9) give a scale value a single attribute: text (i.e., the name of the scale value like &amp;quot;below standard,&amp;quot; &amp;quot;meets standard,&amp;quot; &amp;quot;above standard&amp;quot;). Scale values can be particularly useful if given attributes including: numerical equivalent, idnumber (code id), and a description. The new attributes will require a new table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed changes:&#039;&#039; Create a new table &#039;scale_values&#039; that includes a foreign key to the &#039;scale&#039; table, and migrate the &#039;scale&#039; field values from the &#039;scale&#039; table (as serialised text) to the &#039;scale_values&#039; table (as separate records). A sort order field will be used to track ranking (starting with the lowest with a sortorder of 0). &lt;br /&gt;
&lt;br /&gt;
Below is the proposed &#039;scale&#039; table, and further below is the proposed &#039;scale_value&#039; table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depth&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The depth of the competency (beginning at 1)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, a value from the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;question/category&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, quiz_question_instance id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14354</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14354"/>
		<updated>2009-08-18T02:10:25Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: Goals: edits to connecting competencies and evidence items&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify parent-child relations between competencies and related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to describe competencies on a given depth level consistently with custom meta data fields and categories&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a &#039;&#039;site-level competency view&#039;&#039;):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence &#039;&#039;in a course&#039;&#039;:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion of the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 Question results&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
&lt;br /&gt;
The scale feature introduced in Moodle 1.9 needs to be expanded to provide numerical equivalents for each scale value. We&#039;ll need to create a new table &#039;scale_values&#039; that includes a foreign key of the &#039;scale&#039; table, and remove the &#039;scale&#039; field from the &#039;scale&#039; table. Here is how the modified &#039;scale&#039; table will look:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depth&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The depth of the competency (beginning at 1)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, a value from the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;question/category&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, quiz_question_instance id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14353</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14353"/>
		<updated>2009-08-18T02:07:44Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: Goals: competencies just ordered in a hierarchy with related terms - use taglib for folksonomy?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to define related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify parent-child relations between competencies and related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to describe competencies on a given depth level consistently with custom meta data fields and categories&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a competency view):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence in a course they are assigned to:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 Question results&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
&lt;br /&gt;
The scale feature introduced in Moodle 1.9 needs to be expanded to provide numerical equivalents for each scale value. We&#039;ll need to create a new table &#039;scale_values&#039; that includes a foreign key of the &#039;scale&#039; table, and remove the &#039;scale&#039; field from the &#039;scale&#039; table. Here is how the modified &#039;scale&#039; table will look:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depth&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The depth of the competency (beginning at 1)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, a value from the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;question/category&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, quiz_question_instance id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Course_completion&amp;diff=8810</id>
		<title>Course completion</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Course_completion&amp;diff=8810"/>
		<updated>2009-08-18T02:04:20Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: /* Data structures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;This is a SPECIFICATION for a feature in Moodle 2.0 that is still under development&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: MDL-2631 Course credits and tracking of student&#039;s completion&lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: [http://moodle.org/mod/forum/discuss.php?d=126016 http://moodle.org/mod/forum/discuss.php?d=126016]&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Course_completion]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]], [[Aaron Barnes]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
We need to flag when the &amp;quot;student&amp;quot; has finished a course. :-)&lt;br /&gt;
&lt;br /&gt;
We need to allow several types of criteria to determine how a &amp;quot;student&amp;quot; can complete a course:&lt;br /&gt;
* &#039;&#039;&#039;Manual self completion&#039;&#039;&#039;: A &amp;quot;student&amp;quot; can mark her/himself complete a course.&lt;br /&gt;
* &#039;&#039;&#039;Manual completion by&#039;&#039;&#039;: An &amp;quot;admin&amp;quot;, &amp;quot;teacher&amp;quot;, &amp;quot;tutor&amp;quot;, etc can mark a student complete for a course.&lt;br /&gt;
* &#039;&#039;&#039;Activity completion&#039;&#039;&#039;: A &amp;quot;student&amp;quot; completes an activity, building on [https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] developed for 2.0 by Sam Marshall from OU.&lt;br /&gt;
* &#039;&#039;&#039;Course grade&#039;&#039;&#039;: A &amp;quot;student&amp;quot; meets or exceeds a passing grade in the course.&lt;br /&gt;
* &#039;&#039;&#039;Date&#039;&#039;&#039;: After a specified date all &amp;quot;students&amp;quot; are marked as completed in a course.&lt;br /&gt;
* &#039;&#039;&#039;Duration after enrolment&#039;&#039;&#039;: After a specified about of time after enrolment (e.g., 12 weeks), a &amp;quot;student&amp;quot; is automatically marked as complete in a course.&lt;br /&gt;
* &#039;&#039;&#039;Unenrol&#039;&#039;&#039;: After being unenroled, a &amp;quot;student&amp;quot; is marked complete for the course. Useful for external enrolment plugins.&lt;br /&gt;
&lt;br /&gt;
We need to record when and how a &amp;quot;student&amp;quot; meets each criteria in a course.&lt;br /&gt;
&lt;br /&gt;
We need to regularly aggregate the results for the criteria, measure progress, and check to see if a &amp;quot;student&amp;quot; has completed a course.&lt;br /&gt;
&lt;br /&gt;
We need to show:&lt;br /&gt;
* A &amp;quot;student&amp;quot; the necessary criteria to complete a course&lt;br /&gt;
* A &amp;quot;student&amp;quot; how s/he is progressing in a course along the necessary criteria&lt;br /&gt;
* A &amp;quot;teacher&amp;quot; how his/her students are progressing in a course and which students have completed it&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable completion tracking&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page) for activity completion. We need to change the setting&#039;s name and add another setting for course completion.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Rename the setting &amp;quot;Enable activity completion tracking&amp;quot; (the setting will continue to allow activity completion to be enabled in all courses)&lt;br /&gt;
* Create a new setting named &amp;quot;Enable course completion tracking&amp;quot; (the setting will allow course completion to be enabled in all courses)&lt;br /&gt;
&lt;br /&gt;
==Course settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides a fieldset (named &amp;quot;Student progress&amp;quot;) which contains a setting (named &amp;quot;Completion tracking&amp;quot;) which enables/disables activity completion in a course. We need to rename the setting to describe activity completion and add a setting to enable course completion.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Enable completion tracking&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page) for activity completion. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Rename the setting &amp;quot;Completion tracking&amp;quot; to &amp;quot;Activity completion tracking&amp;quot; (the setting will continue to make activity completion features available in the courses)&lt;br /&gt;
* Create a new setting named &amp;quot;Course completion tracking&amp;quot; (the setting will make course completion features available in the course)&lt;br /&gt;
&lt;br /&gt;
==Course completion settings==&lt;br /&gt;
When course completion is enabled in a course (see above), a menu item labeled &amp;quot;Completion&amp;quot; will appear in the course Administration block on the main course page. When a user clicks on the &amp;quot;Completion&amp;quot; link, the course completion admin page will display the criteria described below and in the mockup also below:&lt;br /&gt;
&lt;br /&gt;
[[Image:Edit_course_completion_settings.png|thumb|600px|Edit course completion settings]]&lt;br /&gt;
&lt;br /&gt;
===Criteria enabling===&lt;br /&gt;
We need to allow criteria to be enabled.&lt;br /&gt;
&lt;br /&gt;
We need some rules about enabled criteria in a course:&lt;br /&gt;
* Each criteria (e.g., &amp;quot;Manual self completion&amp;quot;, &amp;quot;Manual completion by&amp;quot;, etc) can be enabled&lt;br /&gt;
* By default, all criteria are not enabled&lt;br /&gt;
&lt;br /&gt;
===Criteria aggregation===&lt;br /&gt;
We need to define overall aggregation methods for the criteria type. We also need to a consistent set of aggregation methods for criteria types which have more than one possible option to determine an individual user&#039;s course completion:&lt;br /&gt;
* &amp;quot;Manual completion by&amp;quot; // more than one role can be enabled to determine if a student has completed the course&lt;br /&gt;
* &amp;quot;Activity completed&amp;quot; // more than one activity completion can be selected to determine if a student has completed the course&lt;br /&gt;
&lt;br /&gt;
Aggregation methods:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Method&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Required to complete the criteria type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Example&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;All&#039;&#039;&#039;&lt;br /&gt;
|All of the enabled child criteria must be completed&lt;br /&gt;
|Not applicable&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Any&#039;&#039;&#039;&lt;br /&gt;
|Any one (1) of the enabled child criteria must be completed&lt;br /&gt;
|Not applicable&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Fraction&#039;&#039;&#039;&lt;br /&gt;
|A fraction of the enabled child criteria must be completed&lt;br /&gt;
|0.25,0.5,0.9&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Units&#039;&#039;&#039;&lt;br /&gt;
|A specified number of the enabled child criteria must be completed &lt;br /&gt;
|2,3,4&lt;br /&gt;
|A unit of 1 is equivalent to &#039;any&#039;. A unit equal to the number of enabled child criteria is equivalent to &#039;all&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Criteria types===&lt;br /&gt;
====Manual self-completion====&lt;br /&gt;
&#039;&#039;&#039;Action:&#039;&#039;&#039;&lt;br /&gt;
* A &amp;quot;student&amp;quot; can manually indicate that s/he has completed a course via the course&#039;s [https://docs.moodle.org/en/Development:Course_completion#Block Completion progress block].&lt;br /&gt;
&#039;&#039;&#039;Tracked:&#039;&#039;&#039;&lt;br /&gt;
* The day/time when the &amp;quot;student&amp;quot; marked him/herself complete.&lt;br /&gt;
&lt;br /&gt;
====Manual completion by====&lt;br /&gt;
&#039;&#039;&#039;Action:&#039;&#039;&#039; &lt;br /&gt;
* A user assigned to the role in the course will see a checkbox in the [https://docs.moodle.org/en/Development:Course_completion#Report Completion progress report], which will allow him/her to manually &amp;quot;Mark complete&amp;quot; each applicable student enrolled in the course.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tracked:&#039;&#039;&#039;&lt;br /&gt;
* The roleid of the user who marked the &amp;quot;student&amp;quot; complete.&lt;br /&gt;
* The userid of the user who marked the &amp;quot;student&amp;quot; complete.&lt;br /&gt;
* The day/time when the user marked the &amp;quot;student&amp;quot; as complete in the course.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
# The Completion progress report will respect:&lt;br /&gt;
#* &#039;&#039;&#039;Separate groups:&#039;&#039;&#039; A &amp;quot;teacher&amp;quot; will only be able to see and mark complete students in her/his group(s) if separate groups is enabled.&lt;br /&gt;
#* &#039;&#039;&#039;Role assignments on the USER-level context:&#039;&#039;&#039; A &amp;quot;Tutor&amp;quot; or &amp;quot;Mentor&amp;quot; will only be able to see and mark complete users assigned to him/her.&lt;br /&gt;
# The criteria can be met only once by the role:&lt;br /&gt;
#* If more than one user is assigned to the role and has the capability of marking the user complete&lt;br /&gt;
#* After a &amp;quot;student&amp;quot; has been marked complete one time by a user in the role, the [https://docs.moodle.org/en/Development:Course_completion#Report Completion progress report] will not provide a checkbox in the &amp;quot;Mark complete&amp;quot; column when viewed by any user in the role in the course.&lt;br /&gt;
# We really be relying on role capabilities and permissions for this.&lt;br /&gt;
&lt;br /&gt;
====Activities completed====&lt;br /&gt;
&#039;&#039;&#039;Action:&#039;&#039;&#039; &lt;br /&gt;
* A &amp;quot;student&amp;quot; will meet the criteria when completing the specified activity, per the activity&#039;s &#039;Activity Completion&#039; settings.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tracked:&#039;&#039;&#039; &lt;br /&gt;
* The cmid, module type, and activity/resource name for each activity.&lt;br /&gt;
* The day/time when the criteria was detected as complete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;&lt;br /&gt;
# The list of activities/resources will contain:&lt;br /&gt;
#* Each activity/resource in the course with &amp;quot;Completion tracking&amp;quot; enabled within the activity/resource.&lt;br /&gt;
#* The type of each activity followed by the activity name (i.e., &amp;quot;[mod name] - [activity/resource name]&amp;quot;). See the mockup on this page (or for a basic example: &amp;quot;Quiz - Derivatives&amp;quot;).&lt;br /&gt;
# If &amp;quot;Activity completion&amp;quot; is not enabled for the site, the &amp;quot;Activities completed&amp;quot; field set will not appear on the page.&lt;br /&gt;
# If &amp;quot;Activity completion&amp;quot; is enabled for the site and not enabled for the course, the &amp;quot;Activities completed&amp;quot; field set will appear and it will only contain this message:&lt;br /&gt;
#:&#039;&#039;&amp;quot;Activity completion must be enabled for this course.&amp;quot;&#039;&#039;&lt;br /&gt;
# If &amp;quot;Activity completion&amp;quot; is enabled for the site and course, and there are no activities in the course, the &amp;quot;Activities completed&amp;quot; field set will appear and it will only contain this message:&lt;br /&gt;
#:&#039;&#039;&amp;quot;Currently, there are no activities in this course&amp;quot;&#039;&#039;&lt;br /&gt;
# If &amp;quot;Activity completion&amp;quot; is enabled for the site and course, and there are activities but none have activity completion enabled, the &amp;quot;Activities completed&amp;quot; field set will appear and it will only contain this message:&lt;br /&gt;
#:&#039;&#039;&amp;quot;Currently, none of the activities in this course have defined activity completion settings.&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Course grade====&lt;br /&gt;
&#039;&#039;&#039;Action:&#039;&#039;&#039; &lt;br /&gt;
* A &amp;quot;student&amp;quot; will meet the criteria when earning a total course grade above the passing grade.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tracked:&#039;&#039;&#039; &lt;br /&gt;
* The day/time when the user&#039;s course grade was evaluated as having exceeded the passing grade.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;&lt;br /&gt;
* The passing grade can also be updated via the course&#039;s &amp;quot;Grade to pass&amp;quot; setting found in the Grader report&#039;s edit page for the top level category for the course.&lt;br /&gt;
* Once a student has completed the course, both the &amp;quot;Passing grade&amp;quot; setting on the course page and the &amp;quot;Grade to pass&amp;quot; setting in the top level category for the course will be locked. A message about locking will appear on the settings page for the top level category for the course.&lt;br /&gt;
&lt;br /&gt;
====Date====&lt;br /&gt;
&#039;&#039;&#039;Action:&#039;&#039;&#039; &lt;br /&gt;
* A &amp;quot;student&amp;quot; enroled in the course will automatically meet the criteria after a specified date.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tracked:&#039;&#039;&#039; &lt;br /&gt;
* The day/time when specified day was evaluated as having passed.&lt;br /&gt;
&lt;br /&gt;
====Duration after enrolment====&lt;br /&gt;
&#039;&#039;&#039;Action:&#039;&#039;&#039; &lt;br /&gt;
* A &amp;quot;student&amp;quot; will meet the criteria after the specified number of days after his/her enrolment.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tracked:&#039;&#039;&#039; &lt;br /&gt;
* The day/time when the &amp;quot;student&amp;quot; marked him/herself complete.&lt;br /&gt;
&lt;br /&gt;
====Unenrolment====&lt;br /&gt;
&#039;&#039;&#039;Action:&#039;&#039;&#039; &lt;br /&gt;
* A &amp;quot;student&amp;quot; will meet the criteria when being unenroled from the course.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tracked:&#039;&#039;&#039;&lt;br /&gt;
* The day/time when the &amp;quot;student&amp;quot; was unenroled from the course.&lt;br /&gt;
&lt;br /&gt;
===Notifications===&lt;br /&gt;
====Enable====&lt;br /&gt;
If enabled, a &amp;quot;student&amp;quot; will receive notification when s/he has completed the course via the completion criteria.&lt;br /&gt;
&lt;br /&gt;
====Notify====&lt;br /&gt;
Users assigned to each selected role in the course will receive notification when each &amp;quot;student&amp;quot; completes the course.&lt;br /&gt;
&lt;br /&gt;
===Locking===&lt;br /&gt;
When the first student has completed the course, the course completion criteria settings will be locked. The course settings can be unlocked (via an &amp;quot;Unlock course completion options&amp;quot; button), however a warning message will be displayed stating that unlocking the settings requires deleting all prior course completion data for the course. Once the completion data is deleted, the settings become unlocked (i.e., un-greyed out).&lt;br /&gt;
&lt;br /&gt;
This is consistent with activity completion in 2.0, in which activity completion settings are locked when a user first completes an activity. Activity completion settings can be unlocked after all completion activity is deleted.&lt;br /&gt;
&lt;br /&gt;
==Activity settings==&lt;br /&gt;
If activity completion is enabled and activity completion is a criteria for course completion, then all activity completion settings will be locked once a student has completed the course. In this case, unlocking an activity&#039;s completion settings will require deleting both the activity&#039;s completion data and the course&#039;s completion data.&lt;br /&gt;
&lt;br /&gt;
If an activity is being tracked for course completion, we should add a warning/confirmation screen when an &amp;quot;admin&amp;quot; attempts to delete it. The message should say, &amp;quot;[Activity name] is currently a criteria for course completion. Are you sure you want to delete it?&amp;quot; [Delete anyway] / [Cancel]. If the &amp;quot;admin&amp;quot; confirms, the activity will be deleted however completion data for users who completed it will still remain tracked.&lt;br /&gt;
&lt;br /&gt;
Should the activity completion data remain?&lt;br /&gt;
Should the course completion data be re-aggregated?&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
[[Image:Course_completion_data_model.png|thumb|400px|Course completion data model]]&lt;br /&gt;
&lt;br /&gt;
===course===&lt;br /&gt;
The course table will require the following new fields. &#039;enablecompletion&#039; will now be used for activity and course completion:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Type&lt;br /&gt;
!Default &lt;br /&gt;
!Info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;completionnotify&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|Notify users when they complete this course&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===course_completion_aggregation_methods===&lt;br /&gt;
This new table will be populated with the aggregation method for &amp;quot;Overall criteria&amp;quot;, &amp;quot;Manual completion by&amp;quot;, and &amp;quot;Activities completed&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Type&lt;br /&gt;
!Default &lt;br /&gt;
!Info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;course&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the course that the course completion aggregation relates to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;criteriatype&#039;&#039;&#039;&lt;br /&gt;
|int(20)&lt;br /&gt;
|null&lt;br /&gt;
|The criteria type&#039;s integer constant (&#039;role&#039;, &#039;activity&#039;) or null if &#039;overall&#039; course aggregation. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;method&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|1&lt;br /&gt;
|&#039;1&#039;=&#039;all&#039;, &#039;2&#039;=&#039;any&#039;, &#039;3&#039;=&#039;fraction&#039;, &#039;4&#039;=&#039;unit&#039;.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;value&#039;&#039;&#039;&lt;br /&gt;
|number(10)&lt;br /&gt;
|null&lt;br /&gt;
|null for &#039;all&#039; and &#039;any&#039;, 0..1 for &#039;fraction&#039;, int &amp;gt; 0 for &#039;unit&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===course_completion_criteria===&lt;br /&gt;
This new table will be populated with each criteria in each course for course completion:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Type&lt;br /&gt;
!Default &lt;br /&gt;
!Info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;course&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the course that the course completion criteria relates to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemname&#039;&#039;&#039; (not implemented)&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|null&lt;br /&gt;
|The name of the item (e.g. &amp;quot;Mark yourself complete&amp;quot;, &amp;quot;Teacher marks you complete&amp;quot;, &amp;quot;[Activity name]&amp;quot;, &amp;quot;[postenrol] days after enrolment&amp;quot;, &amp;quot;Official Date: [date]&amp;quot;. Used for all item types except unenrol.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;criteriatype&#039;&#039;&#039;&lt;br /&gt;
|int(20)&lt;br /&gt;
|&lt;br /&gt;
|The criteria type&#039;s integer constant (&#039;self&#039;, &#039;role&#039;, &#039;mod&#039;, &#039;grade&#039;, &#039;enrolperiod&#039;, &#039;date&#039;, &#039;postenrol&#039;).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;module&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|null&lt;br /&gt;
|The name of the module (e.g., &#039;scorm&#039;, &#039;quiz&#039;, &#039;feedback&#039;). Used only if criteriatype=&#039;mod&#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;moduleinstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|null&lt;br /&gt;
|The id of the activity/resource module or role. Used only if criteriatype=&#039;mod&#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;enrolperiod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|null&lt;br /&gt;
|The number of seconds after enrolment. Used only if criteriatype=&#039;enrolperiod&#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;date&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|null&lt;br /&gt;
|The timestamp of the date for course completion. Used only if criteriatype=&#039;date&#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;gradepass&#039;&#039;&#039;&lt;br /&gt;
|number(10)&lt;br /&gt;
|null&lt;br /&gt;
|The course grade required to complete this criteria. Used only if criteriatype=&#039;grade&#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;role&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|null&lt;br /&gt;
|The role id that can mark &#039;student&#039;s as complete in the course. Used only if criteriatype=&#039;role&#039;.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;lock&#039;&#039;&#039; (currently unused)&lt;br /&gt;
|int(10)&lt;br /&gt;
|null&lt;br /&gt;
|Date this criteria was locked&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===course_completion_criteria_completions===&lt;br /&gt;
This new table will be populated with records for each user as they complete each course completion criteria.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Type&lt;br /&gt;
!Default &lt;br /&gt;
!Info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user who has completed the course&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;course&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the completed course&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;criteriaid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the completion criteria this references&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;gradefinal&#039;&#039;&#039;&lt;br /&gt;
|number(10)&lt;br /&gt;
|null&lt;br /&gt;
|The final grade for the course (if referenced criteria type=&#039;grade&#039;).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;unenroled&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|null&lt;br /&gt;
|Timestamp when the user was unenroled (if referenced criteria type=&#039;unenrol&#039;).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;deleted&#039;&#039;&#039; (currently unused)&lt;br /&gt;
|int(1)&lt;br /&gt;
|null&lt;br /&gt;
|The course was deleted&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecompleted&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|null (should be notnull)&lt;br /&gt;
|Timestamp when the user completed the criteria&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===course_completion_notify===&lt;br /&gt;
This new table will be populated with the roles which should be notified for this course&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Type&lt;br /&gt;
!Default &lt;br /&gt;
!Info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;course&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the course that the condition applies to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;role&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the role that should be sent a notification when a course has been completed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;message&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|HTML formatted message to be sent to the user assigned to the role.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timesent&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the notification was sent&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===course_completions===&lt;br /&gt;
This new table will be populated with a record for a user when s/he meets course completion criteria selected/enabled for a course.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Type&lt;br /&gt;
!Default &lt;br /&gt;
!Info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user who has completed the course&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;course&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the completed course&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;deleted&#039;&#039;&#039; (currently unused)&lt;br /&gt;
|int(1)&lt;br /&gt;
|null&lt;br /&gt;
|The course was deleted&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timenotified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|null&lt;br /&gt;
|Timestamp when the user was notified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timeenroled&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp when the user enroled in the course&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecompleted&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|null (should be notnull)&lt;br /&gt;
|Timestamp when the user completed the course&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Evaluating completion=&lt;br /&gt;
Since the gradebook aggregation is performed via cron, it makes sense that course completion is also evaluated by cron.&lt;br /&gt;
&lt;br /&gt;
This creates an issue in which the progress block will not instantly not show course completion after the necessary criteria has been met by a &amp;quot;student&amp;quot;. However, this can be solved by adding some instructional text to say &amp;quot;may take a few minutes to update&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities=&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Feature&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Progress block&lt;br /&gt;
|Mark self-complete in progress block&lt;br /&gt;
|block/progress:markselfcomplete&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Progress report&lt;br /&gt;
|View course progress report&lt;br /&gt;
|coursereport/progress:view&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Progress report&lt;br /&gt;
|Mark users complete in course progress report&lt;br /&gt;
|coursereport/progress:markcomplete&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Course reporting=&lt;br /&gt;
==Completion progress report==&lt;br /&gt;
[[Image:Completion_report.png|thumb|600px|Course completion progress report]]&lt;br /&gt;
&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides a &amp;quot;Completion progress report&amp;quot;. The report can be found via on &amp;quot;Reports&amp;quot; menu item link in the course Administration block and when &amp;quot;Completion tracking&amp;quot; is enabled for the site and course.&lt;br /&gt;
&lt;br /&gt;
The report shows:&lt;br /&gt;
* A column for each of the activities/resources in the course with &amp;quot;Completion tracking&amp;quot; enabled&amp;quot;&lt;br /&gt;
* A row for each user enroled in the course&lt;br /&gt;
* The completion status for each activity&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Include in the report all enabled criteria for course completion (e.g., &amp;quot;Manual self completion&amp;quot;, &amp;quot;Manual completion by&amp;quot;, as well as the activities etc)&lt;br /&gt;
* Each user&#039;s status for completion of each criteria, indicated by a status icon&lt;br /&gt;
* Allow the completion admin page to determine which activities are shown in the report&lt;br /&gt;
* Allow the list of users to be sortable, searchable, and filterable (by group, groupings, and/or user profile fields).&lt;br /&gt;
* Allow user profile fields (standard and custom) can be added/removed as columns in the list.&lt;br /&gt;
* When rolling over the each icon, additional details (including the completion date) will display.&lt;br /&gt;
&lt;br /&gt;
See the mockup to the right with all course completion criteria appearing (i.e., all criteria types have been enabled in a course).&lt;br /&gt;
&lt;br /&gt;
As described further above, display rules for separate groups will apply. If separate groups is enabled for the course, a &amp;quot;teacher&amp;quot; will only see students and completion data for users in the group(s) that she/he is assigned to.&lt;br /&gt;
&lt;br /&gt;
Options for exporting completion data to CSV, ODF or Excel will be available. Completion dates will be included in the export.&lt;br /&gt;
&lt;br /&gt;
A column labeled &amp;quot;Mark complete&amp;quot; will appear containing a checkbox for each student if the user viewing the report is assigned to a role that is allowed to manually indicate that the students have completed the course.&lt;br /&gt;
&lt;br /&gt;
Not shown in the mockup, however we should display the specified values under the applicable heading in the report for each of the following feilds:&lt;br /&gt;
* Period after enrolment&lt;br /&gt;
* Passing grade&lt;br /&gt;
* Date (for completion)&lt;br /&gt;
&lt;br /&gt;
==Gradebook==&lt;br /&gt;
# If &amp;quot;Passing grade&amp;quot; is enabled as a criteria for course completion, a grader should have the option of seeing completion status (i.e., &amp;quot;complete&amp;quot; / &amp;quot;not complete&amp;quot;) as a column in the grader report.&lt;br /&gt;
# If a user assigned to a role that is enabled for &amp;quot;Manual completion by&amp;quot;, the user should have the option of manually indicating which students have completed the course, a &amp;quot;Mark complete&amp;quot; column will appear to the right of the &amp;quot;Course total&amp;quot; column with a checkbox for each student who has not yet completed the course.&lt;br /&gt;
&lt;br /&gt;
We should also provide an option to show course completion status in gradebook exports. Field options will include:&lt;br /&gt;
* Completion status (e.g., &amp;quot;Complete&amp;quot;, &amp;quot;Not complete&amp;quot;)&lt;br /&gt;
* Completion date&lt;br /&gt;
&lt;br /&gt;
==Completion progress block==&lt;br /&gt;
[[Image:Course_completion_progress_block.png|thumb|190px|Course completion progress block]]&lt;br /&gt;
&lt;br /&gt;
If completion is enabled for the site and a course, a completion block will be available to be added to the course.&lt;br /&gt;
&lt;br /&gt;
The block will allow a &amp;quot;student&amp;quot; to see:&lt;br /&gt;
* The completion criteria for completing the course&lt;br /&gt;
* His/her status for completion of each criteria (similar to the Completion progress report)&lt;br /&gt;
* His/her overall completion status for the course (complete / not complete)&lt;br /&gt;
&lt;br /&gt;
If all of the enabled criteria are required, the introduction text should say:&lt;br /&gt;
:&#039;&#039;&amp;quot;All of the criteria below needed&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If any of the enabled criteria are required, the introduction text should say:&lt;br /&gt;
:&#039;&#039;&amp;quot;Any of the criteria below needed&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If the current user can self complete the course, the block will provide an &amp;quot;I&#039;ve completed this course&amp;quot; button (if the user has not already marked him/herself complete).&lt;br /&gt;
&lt;br /&gt;
Activity completion criteria/status (if enabled for course completion) should be included in the block. See [http://tracker.moodle.org/browse/MDL-16466 MDL-16466] (&amp;quot;Activities on the course page do not convey to student that completion is expected or available for the activity&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
==User (course) profile==&lt;br /&gt;
Activity and course completion criteria/status data should appear in a user&#039;s &amp;quot;Outline report&amp;quot; and &amp;quot;Complete report&amp;quot; in the user profile area, which is being reworked for 2.0 separately from this spec.&lt;br /&gt;
&lt;br /&gt;
=Site reporting=&lt;br /&gt;
&lt;br /&gt;
==User (site) profile==&lt;br /&gt;
Activity and course completion criteria/status data should appear in a user&#039;s &amp;quot;Outline report&amp;quot; and &amp;quot;Complete report&amp;quot; in the user profile area, which is being reworked for 2.0 separately from this spec.&lt;br /&gt;
&lt;br /&gt;
==My Moodle==&lt;br /&gt;
Activity and course completion criteria/status data should appear with the course and course activity listings. My Moodle is being reworked for 2.0 separately from this spec.&lt;br /&gt;
&lt;br /&gt;
=Cron=&lt;br /&gt;
A cron function will check the criteria and update the course_completion_completions table as necessary. Here&#039;s a breakdown of the tasks for each criteria, and will need to be optimised for performance and scalability across all courses:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Manual self completion:&#039;&#039;&#039; Cron not needed, performed directly from the Completion progress block.&lt;br /&gt;
* &#039;&#039;&#039;Manual completion by:&#039;&#039;&#039; Cron not needed, performed directly via the Completion progress report.&lt;br /&gt;
* &#039;&#039;&#039;Course grade:&#039;&#039;&#039; Compare the course grade to the passing grade.&lt;br /&gt;
* &#039;&#039;&#039;Unenrol:&#039;&#039;&#039; Compare course_completion-&amp;gt;unenroled to role_assignments-&amp;gt;timeend for the &amp;quot;student&amp;quot; role in the course.&lt;br /&gt;
* &#039;&#039;&#039;Date:&#039;&#039;&#039; Compare the current date to the specified date.&lt;br /&gt;
* &#039;&#039;&#039;Duration after enrolment:&#039;&#039;&#039; Compare the current date to the role_assignments-&amp;gt;timestart + the specified period after enrolment.&lt;br /&gt;
* &#039;&#039;&#039;Activity completion:&#039;&#039;&#039; Evaluate the necessary records in the course_modules_completion table.&lt;br /&gt;
* &#039;&#039;&#039;Course completion:&#039;&#039;&#039; Aggregate the necessary fields in course_completion table, updating the timecompleted field with the current timestamp if the user has met the necessary criteria.&lt;br /&gt;
* &#039;&#039;&#039;Notifications:&#039;&#039;&#039; Send out them out to the user (if enabled) and to users in the selected role.&lt;br /&gt;
&lt;br /&gt;
=Backup and restore=&lt;br /&gt;
* The new completion fields in the course table will be included in the backup.&lt;br /&gt;
* Entries in the course_completion_items, course_completion_aggregation_methods, and course_completion_notify tables for the course should also be included in the backup.&lt;br /&gt;
* When user data is included in a course backup, the backup will also include records in the course_completion_completions table for the course.&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14352</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14352"/>
		<updated>2009-08-12T04:22:53Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: removed typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy, folksonomy (tags), or hybrid&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify parent-child relations between competencies and related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to describe competencies on a given depth level consistently with custom meta data fields and categories&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a competency view):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence in a course they are assigned to:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 Question results&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
&lt;br /&gt;
The scale feature introduced in Moodle 1.9 needs to be expanded to provide numerical equivalents for each scale value. We&#039;ll need to create a new table &#039;scale_values&#039; that includes a foreign key of the &#039;scale&#039; table, and remove the &#039;scale&#039; field from the &#039;scale&#039; table. Here is how the modified &#039;scale&#039; table will look:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depth&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The depth of the competency (beginning at 1)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, a value from the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;question/category&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, quiz_question_instance id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14351</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14351"/>
		<updated>2009-08-12T02:43:42Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: /* Data structures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy, folksonomy (tags), or hybrid&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify parent-child relations between competencies and related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to describe competencies on a given depth level consistently with custom meta data fields and categories&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a competency view):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence in a course they are assigned to:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 Question results&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Settings=&lt;br /&gt;
==Site settings==&lt;br /&gt;
[https://docs.moodle.org/en/Development:Conditional_activities#Completion_tracking_2 Activity Completion] provides an &amp;quot;Enable outcomes&amp;quot; setting (found in the Site Administration block&#039;s Advanced features / optional subsystems settings page). We need to keep outcomes, however we will need to add competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed changes:&#039;&#039;&#039;&lt;br /&gt;
* Create a new setting named &amp;quot;Enable competencies&amp;quot; (the setting will allow competencies to be defined)&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
&lt;br /&gt;
The scale feature introduced in Moodle 1.9 needs to be expanded to provide numerical equivalents for each scale value. We&#039;ll need to create a new table &#039;scale_values&#039; that includes a foreign key of the &#039;scale&#039; table, and remove the &#039;scale&#039; field from the &#039;scale&#039; table. Here is how the modified &#039;scale&#039; table will look:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depth&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The depth of the competency (beginning at 1)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, a value from the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;question/category&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, quiz_question_instance id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Bold text&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14350</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14350"/>
		<updated>2009-08-06T04:07:10Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: data structures: added a competency_depth table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy, folksonomy (tags), or hybrid&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify parent-child relations between competencies and related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to describe competencies on a given depth level consistently with custom meta data fields and categories&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a competency view):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence in a course they are assigned to:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 Question results&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
&lt;br /&gt;
The scale feature introduced in Moodle 1.9 needs to be expanded to provide numerical equivalents for each scale value. We&#039;ll need to create a new table &#039;scale_values&#039; that includes a foreign key of the &#039;scale&#039; table, and remove the &#039;scale&#039; field from the &#039;scale&#039; table. Here is how the modified &#039;scale&#039; table will look:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depth&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The depth of the competency (beginning at 1)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, a value from the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Full name for the depth level&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description for the depth level&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;question/category&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, quiz_question_instance id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14349</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14349"/>
		<updated>2009-08-05T04:03:25Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: Example frameworks: fixed typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy, folksonomy (tags), or hybrid&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify parent-child relations between competencies and related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to describe competencies on a given depth level consistently with custom meta data fields and categories&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a competency view):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence in a course they are assigned to:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 Question results&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data above fits into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
&lt;br /&gt;
The scale feature introduced in Moodle 1.9 needs to be expanded to provide numerical equivalents for each scale value. We&#039;ll need to create a new table &#039;scale_values&#039; that includes a foreign key of the &#039;scale&#039; table, and remove the &#039;scale&#039; field from the &#039;scale&#039; table. Here is how the modified &#039;scale&#039; table will look:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depth&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The depth of the competency (beginning at 1)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, a value from the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;question/category&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, quiz_question_instance id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14348</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14348"/>
		<updated>2009-08-05T02:43:57Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: /* Example frameworks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy, folksonomy (tags), or hybrid&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify parent-child relations between competencies and related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to describe competencies on a given depth level consistently with custom meta data fields and categories&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a competency view):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence in a course they are assigned to:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 Question results&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;evidence&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&lt;br /&gt;
&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|activity outcome &amp;quot;Recognizing pairs of rhyming words and producing rhymes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Blending and segmenting syllables and onset-rimes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome &amp;quot;Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;)&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|none&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|activity outcome: &amp;quot;Distinguishing between printed letters and words&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying the first and last parts of a word (beginning/end of the word)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
activity outcome: &amp;quot;Identifying key parts of a book: front and back, print, illustrations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|all&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data below would fit into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
&lt;br /&gt;
The scale feature introduced in Moodle 1.9 needs to be expanded to provide numerical equivalents for each scale value. We&#039;ll need to create a new table &#039;scale_values&#039; that includes a foreign key of the &#039;scale&#039; table, and remove the &#039;scale&#039; field from the &#039;scale&#039; table. Here is how the modified &#039;scale&#039; table will look:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depth&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The depth of the competency (beginning at 1)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, a value from the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;question/category&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, quiz_question_instance id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14347</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14347"/>
		<updated>2009-08-05T02:26:07Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: Example frameworks: moved example into a table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy, folksonomy (tags), or hybrid&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify parent-child relations between competencies and related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to describe competencies on a given depth level consistently with custom meta data fields and categories&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a competency view):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence in a course they are assigned to:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 Question results&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is based roughly on the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Depth level&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Depth name&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Competency short name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency full name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency aggregation method&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency weight&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Competency proficiency expected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&amp;quot;Curriculum&amp;quot;&lt;br /&gt;
|&amp;quot;Literacy&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|none&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&amp;quot;Type&amp;quot;&lt;br /&gt;
|&amp;quot;Reading&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|none&lt;br /&gt;
|20%&lt;br /&gt;
|100%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&amp;quot;Standard&amp;quot;&lt;br /&gt;
|&amp;quot;Standard 1.1 Reading Strategies&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|none&lt;br /&gt;
|20%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies: Phonological Awareness&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|none&lt;br /&gt;
|100%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 1 - Applies phonological knowledge and skills by...&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|none&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;quot;Strategy&amp;quot;&lt;br /&gt;
|&amp;quot;Early Reading Skills and Strategies - Concepts of Print&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|none&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&amp;quot;Code&amp;quot;&lt;br /&gt;
|&amp;quot;RK: 2 - Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot;&lt;br /&gt;
|all&lt;br /&gt;
|none&lt;br /&gt;
|50%&lt;br /&gt;
|80%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
                activity outcome -&amp;gt; Recognizing pairs of rhyming words and producing rhymes : weight: &amp;quot;33%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Blending and segmenting syllables and onset-rimes (e.g., “cup-cake,” “s-at”) : weight: &amp;quot;33%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;) : weight: &amp;quot;33%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Distinguishing between printed letters and words : weight: &amp;quot;25%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality : weight: &amp;quot;25%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Identifying the first and last parts of a word (beginning/end of the word) : weight: &amp;quot;25%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Identifying key parts of a book: front and back, print, illustrations : weight: &amp;quot;25%&amp;quot;&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data below would fit into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
&lt;br /&gt;
The scale feature introduced in Moodle 1.9 needs to be expanded to provide numerical equivalents for each scale value. We&#039;ll need to create a new table &#039;scale_values&#039; that includes a foreign key of the &#039;scale&#039; table, and remove the &#039;scale&#039; field from the &#039;scale&#039; table. Here is how the modified &#039;scale&#039; table will look:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depth&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The depth of the competency (beginning at 1)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, a value from the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;question/category&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, quiz_question_instance id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14346</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14346"/>
		<updated>2009-08-05T02:04:00Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: /* Role capabilities and permissions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy, folksonomy (tags), or hybrid&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify parent-child relations between competencies and related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to describe competencies on a given depth level consistently with custom meta data fields and categories&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a competency view):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence in a course they are assigned to:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 Question results&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is an excerpt from the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
 competency -&amp;gt; &amp;quot;Curriculum&amp;quot; : &amp;quot;Literacy&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight none : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
    competency -&amp;gt; &amp;quot;Type&amp;quot; : &amp;quot;Reading&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight &amp;quot;20%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
       competency -&amp;gt; &amp;quot;Standard 1.1&amp;quot; : &amp;quot;Reading Strategies&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;20%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
          competency -&amp;gt; &amp;quot;Early Reading Skills and Strategies&amp;quot; : &amp;quot;Phonological Awareness&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;100%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
             competency -&amp;gt; &amp;quot;RK: 1&amp;quot; : &amp;quot;Applies phonological knowledge and skills by...&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;50%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Recognizing pairs of rhyming words and producing rhymes : weight: &amp;quot;33%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Blending and segmenting syllables and onset-rimes (e.g., “cup-cake,” “s-at”) : weight: &amp;quot;33%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;) : weight: &amp;quot;33%&amp;quot;&lt;br /&gt;
          competency -&amp;gt; &amp;quot;Early Reading Skills and Strategies&amp;quot; : &amp;quot;Concepts of Print&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;100%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
             competency -&amp;gt; &amp;quot;RK: 2&amp;quot; : &amp;quot;Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;50%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Distinguishing between printed letters and words : weight: &amp;quot;25%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality : weight: &amp;quot;25%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Identifying the first and last parts of a word (beginning/end of the word) : weight: &amp;quot;25%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Identifying key parts of a book: front and back, print, illustrations : weight: &amp;quot;25%&amp;quot;&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data below would fit into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
&lt;br /&gt;
The scale feature introduced in Moodle 1.9 needs to be expanded to provide numerical equivalents for each scale value. We&#039;ll need to create a new table &#039;scale_values&#039; that includes a foreign key of the &#039;scale&#039; table, and remove the &#039;scale&#039; field from the &#039;scale&#039; table. Here is how the modified &#039;scale&#039; table will look:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depth&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The depth of the competency (beginning at 1)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, a value from the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;question/category&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, quiz_question_instance id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14345</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14345"/>
		<updated>2009-08-05T02:03:38Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: /* Example frameworks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy, folksonomy (tags), or hybrid&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify parent-child relations between competencies and related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to describe competencies on a given depth level consistently with custom meta data fields and categories&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a competency view):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence in a course they are assigned to:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 Question results&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is an excerpt from the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
 competency -&amp;gt; &amp;quot;Curriculum&amp;quot; : &amp;quot;Literacy&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight none : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
    competency -&amp;gt; &amp;quot;Type&amp;quot; : &amp;quot;Reading&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight &amp;quot;20%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
       competency -&amp;gt; &amp;quot;Standard 1.1&amp;quot; : &amp;quot;Reading Strategies&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;20%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
          competency -&amp;gt; &amp;quot;Early Reading Skills and Strategies&amp;quot; : &amp;quot;Phonological Awareness&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;100%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
             competency -&amp;gt; &amp;quot;RK: 1&amp;quot; : &amp;quot;Applies phonological knowledge and skills by...&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;50%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Recognizing pairs of rhyming words and producing rhymes : weight: &amp;quot;33%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Blending and segmenting syllables and onset-rimes (e.g., “cup-cake,” “s-at”) : weight: &amp;quot;33%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;) : weight: &amp;quot;33%&amp;quot;&lt;br /&gt;
          competency -&amp;gt; &amp;quot;Early Reading Skills and Strategies&amp;quot; : &amp;quot;Concepts of Print&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;100%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
             competency -&amp;gt; &amp;quot;RK: 2&amp;quot; : &amp;quot;Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;50%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Distinguishing between printed letters and words : weight: &amp;quot;25%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality : weight: &amp;quot;25%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Identifying the first and last parts of a word (beginning/end of the word) : weight: &amp;quot;25%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Identifying key parts of a book: front and back, print, illustrations : weight: &amp;quot;25%&amp;quot;&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data below would fit into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
&lt;br /&gt;
The scale feature introduced in Moodle 1.9 needs to be expanded to provide numerical equivalents for each scale value. We&#039;ll need to create a new table &#039;scale_values&#039; that includes a foreign key of the &#039;scale&#039; table, and remove the &#039;scale&#039; field from the &#039;scale&#039; table. Here is how the modified &#039;scale&#039; table will look:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depth&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The depth of the competency (beginning at 1)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, a value from the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;question/category&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, quiz_question_instance id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14344</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14344"/>
		<updated>2009-08-05T02:03:20Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: Example frameworks: added introductory info to example 1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy, folksonomy (tags), or hybrid&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify parent-child relations between competencies and related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to describe competencies on a given depth level consistently with custom meta data fields and categories&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a competency view):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence in a course they are assigned to:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 Question results&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
The example data below is an excerpt from the [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading.&lt;br /&gt;
&lt;br /&gt;
 competency -&amp;gt; &amp;quot;Curriculum&amp;quot; : &amp;quot;Literacy&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight none : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
    competency -&amp;gt; &amp;quot;Type&amp;quot; : &amp;quot;Reading&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight &amp;quot;20%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
       competency -&amp;gt; &amp;quot;Standard 1.1&amp;quot; : &amp;quot;Reading Strategies&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;20%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
          competency -&amp;gt; &amp;quot;Early Reading Skills and Strategies&amp;quot; : &amp;quot;Phonological Awareness&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;100%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
             competency -&amp;gt; &amp;quot;RK: 1&amp;quot; : &amp;quot;Applies phonological knowledge and skills by...&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;50%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Recognizing pairs of rhyming words and producing rhymes : weight: &amp;quot;33%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Blending and segmenting syllables and onset-rimes (e.g., “cup-cake,” “s-at”) : weight: &amp;quot;33%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;) : weight: &amp;quot;33%&amp;quot;&lt;br /&gt;
          competency -&amp;gt; &amp;quot;Early Reading Skills and Strategies&amp;quot; : &amp;quot;Concepts of Print&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;100%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
             competency -&amp;gt; &amp;quot;RK: 2&amp;quot; : &amp;quot;Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;50%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Distinguishing between printed letters and words : weight: &amp;quot;25%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality : weight: &amp;quot;25%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Identifying the first and last parts of a word (beginning/end of the word) : weight: &amp;quot;25%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Identifying key parts of a book: front and back, print, illustrations : weight: &amp;quot;25%&amp;quot;&lt;br /&gt;
&lt;br /&gt;
See [https://docs.moodle.org/en/Development:Competencies_example here] for how the data below would fit into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
&lt;br /&gt;
The scale feature introduced in Moodle 1.9 needs to be expanded to provide numerical equivalents for each scale value. We&#039;ll need to create a new table &#039;scale_values&#039; that includes a foreign key of the &#039;scale&#039; table, and remove the &#039;scale&#039; field from the &#039;scale&#039; table. Here is how the modified &#039;scale&#039; table will look:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depth&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The depth of the competency (beginning at 1)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, a value from the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;question/category&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, quiz_question_instance id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Example frameworks=&lt;br /&gt;
There are an enormous number of example competency frameworks published online. I&#039;ve randomly selected a comprehensive example [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading, and detailed [https://docs.moodle.org/en/Development:Competencies_example here] how it would fit into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14343</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14343"/>
		<updated>2009-08-05T01:02:35Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: data structures: added data model diagram&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy, folksonomy (tags), or hybrid&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify parent-child relations between competencies and related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to describe competencies on a given depth level consistently with custom meta data fields and categories&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a competency view):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence in a course they are assigned to:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 Question results&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
 competency -&amp;gt; &amp;quot;Curriculum&amp;quot; : &amp;quot;Literacy&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight none : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
    competency -&amp;gt; &amp;quot;Type&amp;quot; : &amp;quot;Reading&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight &amp;quot;20%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
       competency -&amp;gt; &amp;quot;Standard 1.1&amp;quot; : &amp;quot;Reading Strategies&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;20%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
          competency -&amp;gt; &amp;quot;Early Reading Skills and Strategies&amp;quot; : &amp;quot;Phonological Awareness&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;100%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
             competency -&amp;gt; &amp;quot;RK: 1&amp;quot; : &amp;quot;Applies phonological knowledge and skills by...&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;50%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Recognizing pairs of rhyming words and producing rhymes : weight: &amp;quot;33%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Blending and segmenting syllables and onset-rimes (e.g., “cup-cake,” “s-at”) : weight: &amp;quot;33%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;) : weight: &amp;quot;33%&amp;quot;&lt;br /&gt;
          competency -&amp;gt; &amp;quot;Early Reading Skills and Strategies&amp;quot; : &amp;quot;Concepts of Print&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;100%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
             competency -&amp;gt; &amp;quot;RK: 2&amp;quot; : &amp;quot;Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;50%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Distinguishing between printed letters and words : weight: &amp;quot;25%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality : weight: &amp;quot;25%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Identifying the first and last parts of a word (beginning/end of the word) : weight: &amp;quot;25%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Identifying key parts of a book: front and back, print, illustrations : weight: &amp;quot;25%&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
[[Image:Competency_data_model.png|thumb|400px|Competencies data model]]&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
&lt;br /&gt;
The scale feature introduced in Moodle 1.9 needs to be expanded to provide numerical equivalents for each scale value. We&#039;ll need to create a new table &#039;scale_values&#039; that includes a foreign key of the &#039;scale&#039; table, and remove the &#039;scale&#039; field from the &#039;scale&#039; table. Here is how the modified &#039;scale&#039; table will look:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depth&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The depth of the competency (beginning at 1)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, a value from the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;question/category&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, quiz_question_instance id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Example frameworks=&lt;br /&gt;
There are an enormous number of example competency frameworks published online. I&#039;ve randomly selected a comprehensive example [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading, and detailed [https://docs.moodle.org/en/Development:Competencies_example here] how it would fit into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14342</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14342"/>
		<updated>2009-08-04T22:46:56Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: data structure: added description field to competency_relations table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy, folksonomy (tags), or hybrid&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify parent-child relations between competencies and related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to describe competencies on a given depth level consistently with custom meta data fields and categories&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a competency view):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence in a course they are assigned to:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 Question results&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
 competency -&amp;gt; &amp;quot;Curriculum&amp;quot; : &amp;quot;Literacy&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight none : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
    competency -&amp;gt; &amp;quot;Type&amp;quot; : &amp;quot;Reading&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight &amp;quot;20%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
       competency -&amp;gt; &amp;quot;Standard 1.1&amp;quot; : &amp;quot;Reading Strategies&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;20%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
          competency -&amp;gt; &amp;quot;Early Reading Skills and Strategies&amp;quot; : &amp;quot;Phonological Awareness&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;100%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
             competency -&amp;gt; &amp;quot;RK: 1&amp;quot; : &amp;quot;Applies phonological knowledge and skills by...&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;50%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Recognizing pairs of rhyming words and producing rhymes : weight: &amp;quot;33%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Blending and segmenting syllables and onset-rimes (e.g., “cup-cake,” “s-at”) : weight: &amp;quot;33%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;) : weight: &amp;quot;33%&amp;quot;&lt;br /&gt;
          competency -&amp;gt; &amp;quot;Early Reading Skills and Strategies&amp;quot; : &amp;quot;Concepts of Print&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;100%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
             competency -&amp;gt; &amp;quot;RK: 2&amp;quot; : &amp;quot;Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;50%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Distinguishing between printed letters and words : weight: &amp;quot;25%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality : weight: &amp;quot;25%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Identifying the first and last parts of a word (beginning/end of the word) : weight: &amp;quot;25%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Identifying key parts of a book: front and back, print, illustrations : weight: &amp;quot;25%&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
&lt;br /&gt;
The scale feature introduced in Moodle 1.9 needs to be expanded to provide numerical equivalents for each scale value. We&#039;ll need to create a new table &#039;scale_values&#039; that includes a foreign key of the &#039;scale&#039; table, and remove the &#039;scale&#039; field from the &#039;scale&#039; table. Here is how the modified &#039;scale&#039; table will look:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depth&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The depth of the competency (beginning at 1)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, a value from the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Info about how competencies are related&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;question/category&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, quiz_question_instance id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Example frameworks=&lt;br /&gt;
There are an enormous number of example competency frameworks published online. I&#039;ve randomly selected a comprehensive example [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading, and detailed [https://docs.moodle.org/en/Development:Competencies_example here] how it would fit into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14341</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14341"/>
		<updated>2009-07-31T05:00:06Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: data structure: competency_evidence removed field proficiencyexpected&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy, folksonomy (tags), or hybrid&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify parent-child relations between competencies and related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to describe competencies on a given depth level consistently with custom meta data fields and categories&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a competency view):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence in a course they are assigned to:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 Question results&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
 competency -&amp;gt; &amp;quot;Curriculum&amp;quot; : &amp;quot;Literacy&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight none : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
    competency -&amp;gt; &amp;quot;Type&amp;quot; : &amp;quot;Reading&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight &amp;quot;20%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
       competency -&amp;gt; &amp;quot;Standard 1.1&amp;quot; : &amp;quot;Reading Strategies&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;20%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
          competency -&amp;gt; &amp;quot;Early Reading Skills and Strategies&amp;quot; : &amp;quot;Phonological Awareness&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;100%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
             competency -&amp;gt; &amp;quot;RK: 1&amp;quot; : &amp;quot;Applies phonological knowledge and skills by...&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;50%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Recognizing pairs of rhyming words and producing rhymes : weight: &amp;quot;33%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Blending and segmenting syllables and onset-rimes (e.g., “cup-cake,” “s-at”) : weight: &amp;quot;33%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;) : weight: &amp;quot;33%&amp;quot;&lt;br /&gt;
          competency -&amp;gt; &amp;quot;Early Reading Skills and Strategies&amp;quot; : &amp;quot;Concepts of Print&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;100%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
             competency -&amp;gt; &amp;quot;RK: 2&amp;quot; : &amp;quot;Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;50%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Distinguishing between printed letters and words : weight: &amp;quot;25%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality : weight: &amp;quot;25%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Identifying the first and last parts of a word (beginning/end of the word) : weight: &amp;quot;25%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Identifying key parts of a book: front and back, print, illustrations : weight: &amp;quot;25%&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
&lt;br /&gt;
The scale feature introduced in Moodle 1.9 needs to be expanded to provide numerical equivalents for each scale value. We&#039;ll need to create a new table &#039;scale_values&#039; that includes a foreign key of the &#039;scale&#039; table, and remove the &#039;scale&#039; field from the &#039;scale&#039; table. Here is how the modified &#039;scale&#039; table will look:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depth&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The depth of the competency (beginning at 1)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, a value from the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a comptency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;question/category&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, quiz_question_instance id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Example frameworks=&lt;br /&gt;
There are an enormous number of example competency frameworks published online. I&#039;ve randomly selected a comprehensive example [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading, and detailed [https://docs.moodle.org/en/Development:Competencies_example here] how it would fit into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14340</id>
		<title>Competencies</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Competencies&amp;diff=14340"/>
		<updated>2009-07-31T04:58:49Z</updated>

		<summary type="html">&lt;p&gt;Jonathannewman: data structure: competency table - changed aggregation field name to aggregationmethod&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: This page outlines ideas for the Competencies feature planned for Moodle 2.0. It&#039;s a &#039;&#039;specification under construction&#039;&#039;! If you have any comments or suggestions, please add them to the [[Development talk:Progress tracking|page comments]].&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT STATE: Proposal&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAIN TRACKER ISSUE&#039;&#039;&#039;: &lt;br /&gt;
* &#039;&#039;&#039;DISCUSSION&#039;&#039;&#039;: Not yet announced on Moodle.org&lt;br /&gt;
* &#039;&#039;&#039;COMMENTS&#039;&#039;&#039;: [[Development_talk:Competencies]]&lt;br /&gt;
* &#039;&#039;&#039;AUTHOR&#039;&#039;&#039;: [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
# Measured amount of abstraction&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to organise competencies in a hierarchy, folksonomy (tags), or hybrid&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify parent-child relations between competencies and related competencies&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to create unlimited hierarchical levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to describe competencies on a given depth level consistently with custom meta data fields and categories&lt;br /&gt;
# Easy navigation&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to easily add new competencies and meta-data&lt;br /&gt;
# Connecting competencies and evidence items&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to attach allowed evidence (course, activity, etc) to a competency (from a competency view):&lt;br /&gt;
#** One or more course grades&lt;br /&gt;
#** One or more course completions (e.g., when completing course A, course B, and course C)&lt;br /&gt;
#** One or more activity outcomes, from one or more courses&lt;br /&gt;
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)&lt;br /&gt;
#* Allow &amp;quot;course creators&amp;quot; to attach competencies to evidence in a course they are assigned to:&lt;br /&gt;
#** Course grade&lt;br /&gt;
#** Completion the course&lt;br /&gt;
#** Activity grade&lt;br /&gt;
#** Completion of an activity in the course&lt;br /&gt;
# Portability&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to import competencies (using import plugins) into a Moodle install&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to export competencies (using export plugins) from a Moodle install&lt;br /&gt;
# Specifying expected proficiency levels&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item&lt;br /&gt;
# Aggregating measured proficiency level for each user&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to specify aggregation methods for each competency:&lt;br /&gt;
#** All child competencies or evidence&lt;br /&gt;
#** Any child competencies or evidence&lt;br /&gt;
#** A specific number of child competencies or evidence&lt;br /&gt;
#** A percentage of child competences or evidence&lt;br /&gt;
#** Sum of weighted child competencies or evidence&lt;br /&gt;
#** Average of weighted child competencies or evidence&lt;br /&gt;
#* Reporting&lt;br /&gt;
#** Allow &amp;quot;admins&amp;quot; to view competency results for all students across all courses.&lt;br /&gt;
#** Allow &amp;quot;teachers&amp;quot; to view student competency results within his/her courses.&lt;br /&gt;
#** Allow &amp;quot;students&amp;quot; to view their own competency results (within a course, or via their profile or My Moodle).&lt;br /&gt;
# Specifying weights&lt;br /&gt;
#* Allow &amp;quot;admins&amp;quot; to assign weight to a competency or a competency evidence item&lt;br /&gt;
# Scalability&lt;br /&gt;
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc&lt;br /&gt;
# Extensibility&lt;br /&gt;
#* Use a plugin architecture for evidence types&lt;br /&gt;
&lt;br /&gt;
==General requirements==&lt;br /&gt;
# We&#039;ll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]&lt;br /&gt;
# We&#039;ll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]&lt;br /&gt;
# We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Scale&#039;&#039;&#039;: A way to measure a competency using descriptors and/or numerical &#039;&#039;&#039;scale values&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors values:&lt;br /&gt;
 &amp;quot;Below average, Average, Above average&amp;quot;&lt;br /&gt;
 &amp;quot;Not competent, Competent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using numerical values:&lt;br /&gt;
 &amp;quot;1, 2, 3, 4, 5&amp;quot;&lt;br /&gt;
 &amp;quot;0, 100&amp;quot;&lt;br /&gt;
 &amp;quot;0.0, 0.5, 1.0&amp;quot;&lt;br /&gt;
 &amp;quot;0, 500, 1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example scales using descriptors and numerical values:&lt;br /&gt;
 &amp;quot;Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0], Competent [100]&amp;quot;&lt;br /&gt;
 &amp;quot;Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency&#039;&#039;&#039;: A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both. &lt;br /&gt;
&lt;br /&gt;
Example hierarchy of competencies:&lt;br /&gt;
 top-level competency: &amp;quot;Literacy&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Reading Comprehension&amp;quot;&lt;br /&gt;
         -&amp;gt; child competency: &amp;quot;Responding to Text&amp;quot;&lt;br /&gt;
             -&amp;gt; child competency: &amp;quot;Initial Understanding of Literary Text&amp;quot;&lt;br /&gt;
                 -&amp;gt; child competency: &amp;quot;Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type&#039;&#039;&#039;: A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:&lt;br /&gt;
 Activity grade&lt;br /&gt;
 Activity completion&lt;br /&gt;
 Activity outcome&lt;br /&gt;
 Course completion&lt;br /&gt;
 Course grade&lt;br /&gt;
 Course outcome&lt;br /&gt;
 Question results&lt;br /&gt;
 File (diploma)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence&#039;&#039;&#039;: A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:&lt;br /&gt;
 &amp;quot;Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%&amp;quot;&lt;br /&gt;
 &amp;quot;Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.&amp;quot;&lt;br /&gt;
 &amp;quot;File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected proficiency level&#039;&#039;&#039;: The expected (or required) rating (based on a scale descriptor or numerical value) for a competency. Examples:&lt;br /&gt;
 &amp;quot;Average&amp;quot;&lt;br /&gt;
 &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;50%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Measured proficiency level&#039;&#039;&#039;: A user&#039;s observed, scored, reported proficiency level for a competency.&lt;br /&gt;
 &amp;quot;Above average&amp;quot;&lt;br /&gt;
 &amp;quot;8&amp;quot;&lt;br /&gt;
 &amp;quot;80%&amp;quot;&lt;br /&gt;
 &amp;quot;Passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency weighting&#039;&#039;&#039;: Child competencies can be assigned weights which can be used for aggregating either sums or averages of child competencies. Examples:&lt;br /&gt;
&lt;br /&gt;
Example with percentage weights&lt;br /&gt;
 -&amp;gt; top-level competency: &amp;quot;Communication&amp;quot;&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Written Communication&amp;quot; : weight: 60%&lt;br /&gt;
     -&amp;gt; child competency: &amp;quot;Oral Communication&amp;quot; : weight: 40%&lt;br /&gt;
&lt;br /&gt;
==Example frameworks==&lt;br /&gt;
&#039;&#039;&#039;Example 1:&#039;&#039;&#039; Competency hierarchy with activity outcomes as evidence&lt;br /&gt;
&lt;br /&gt;
 competency -&amp;gt; &amp;quot;Curriculum&amp;quot; : &amp;quot;Literacy&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight none : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
    competency -&amp;gt; &amp;quot;Type&amp;quot; : &amp;quot;Reading&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight &amp;quot;20%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
       competency -&amp;gt; &amp;quot;Standard 1.1&amp;quot; : &amp;quot;Reading Strategies&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;20%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
          competency -&amp;gt; &amp;quot;Early Reading Skills and Strategies&amp;quot; : &amp;quot;Phonological Awareness&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;100%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
             competency -&amp;gt; &amp;quot;RK: 1&amp;quot; : &amp;quot;Applies phonological knowledge and skills by...&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;50%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Recognizing pairs of rhyming words and producing rhymes : weight: &amp;quot;33%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Blending and segmenting syllables and onset-rimes (e.g., “cup-cake,” “s-at”) : weight: &amp;quot;33%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Isolating phonemes in single-syllable words (e.g., &amp;quot;tell me the first sound in &#039;mop&#039; &amp;quot;; &amp;quot;tell me the last sound in &#039;mop,&#039;&amp;quot; &amp;quot;tell me the middle sound in &#039;mop&#039;&amp;quot;) : weight: &amp;quot;33%&amp;quot;&lt;br /&gt;
          competency -&amp;gt; &amp;quot;Early Reading Skills and Strategies&amp;quot; : &amp;quot;Concepts of Print&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;100%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
             competency -&amp;gt; &amp;quot;RK: 2&amp;quot; : &amp;quot;Demonstrates understanding of concepts of print during shared or individual reading by...&amp;quot; : aggregation method &amp;quot;all&amp;quot; : weight: &amp;quot;50%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Distinguishing between printed letters and words : weight: &amp;quot;25%&amp;quot; : proficiency expected &amp;quot;80%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality : weight: &amp;quot;25%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Identifying the first and last parts of a word (beginning/end of the word) : weight: &amp;quot;25%&amp;quot;&lt;br /&gt;
                activity outcome -&amp;gt; Identifying key parts of a book: front and back, print, illustrations : weight: &amp;quot;25%&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Data structures=&lt;br /&gt;
&lt;br /&gt;
===scale===&lt;br /&gt;
&lt;br /&gt;
The scale feature introduced in Moodle 1.9 needs to be expanded to provide numerical equivalents for each scale value. We&#039;ll need to create a new table &#039;scale_values&#039; that includes a foreign key of the &#039;scale&#039; table, and remove the &#039;scale&#039; field from the &#039;scale&#039; table. Here is how the modified &#039;scale&#039; table will look:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;courseid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the course, which the scale belongs to&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the user who last modified the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===scale_values===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Id of the scale that the scale value describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Name of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|Optional id, code number or local identifier for the scale value (used for reporting).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;numeric&#039;&#039;&#039;&lt;br /&gt;
|number(8)&lt;br /&gt;
|&lt;br /&gt;
|Numerical value for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order for the scale value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Timestamp of when the scale value was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency===&lt;br /&gt;
&lt;br /&gt;
A competency can be part of a hierarchy and can have evidence attached to it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(100)&lt;br /&gt;
|&lt;br /&gt;
|The shortname for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The full name for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The description of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;idnumber&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id, code number or local identifier for the competency used for reporting&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;parentid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the parent competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;depth&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The depth of the competency (beginning at 1)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;path&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The path to the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;aggregationmethod&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;scaleid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The scale used to measure the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The expected proficiency for the competency, a value from the scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when the competency was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The userid of the person who last modified the competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_relations===&lt;br /&gt;
&lt;br /&gt;
For tracking relations between competencies.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid1&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a comptency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid2&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of a related competency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_field===&lt;br /&gt;
&lt;br /&gt;
Data for a competency depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;shortname&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fullname&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Full name for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;datatype&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|The type of field data&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Description of the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;categoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The sort order for the field within its category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;hidden&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field should be hidden&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;required&#039;&#039;&#039;&lt;br /&gt;
|int(1)&lt;br /&gt;
|&lt;br /&gt;
|The field required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;defaultdata&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Default text for the selected parameter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param1&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param2&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param3&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param4&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;param5&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|Parameter text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_category===&lt;br /&gt;
&lt;br /&gt;
A competency&#039;s depth level can have categories for its fields.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|&lt;br /&gt;
|Shortname for the depth level category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sortorder&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The order number for this category&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_depth_info_data===&lt;br /&gt;
&lt;br /&gt;
Data for a depth level field.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fieldid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the field&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data&#039;&#039;&#039;&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The actual data for the competency field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence_items===&lt;br /&gt;
&lt;br /&gt;
A competency can be achieved by one or more forms of evidence.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Auto incrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the competency that this evidence describes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemtype&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;course/outcome&#039;, &#039;mod/outcome&#039;, &#039;course/completion&#039;, &#039;mod/completion&#039;, &#039;course/grade&#039;, &#039;mod/grade&#039;, &#039;question/category&#039;, &#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;itemmodule&#039;&#039;&#039;&lt;br /&gt;
|varchar(30)&lt;br /&gt;
|&lt;br /&gt;
|The type of evidence &#039;quiz&#039;, &#039;scorm&#039;, etc&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&#039;&#039;&#039;iteminstance&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, quiz_question_instance id, files id)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;weight&#039;&#039;&#039;&lt;br /&gt;
|num(10)&lt;br /&gt;
|&lt;br /&gt;
|The weight applied to this evidence item (for aggregation)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was allowed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;usermodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The user who last modified this evidence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===competency_evidence===&lt;br /&gt;
&lt;br /&gt;
Track historical and current competency information for each user.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|auto-incrementing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;competencyid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id of the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencyexpected&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the competency&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;proficiencymeasured&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The measured/evaluated proficiency level for the user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timecreated&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was started&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;timemodified&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time when this competency evidence was last changed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Plugin architecture=&lt;br /&gt;
&#039;&#039;&#039;Competency evidence type plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.&lt;br /&gt;
&lt;br /&gt;
* Course completion&lt;br /&gt;
* Course grade&lt;br /&gt;
* Course outcome&lt;br /&gt;
* Activity completion&lt;br /&gt;
* Activity grade&lt;br /&gt;
* Activity outcome&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Similar to the gradebook, we need to allow development of report plugins for competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import/Export plugins&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We need to be able to import and export data related to competencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency framework import/export&#039;&#039;&#039;&lt;br /&gt;
A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:&lt;br /&gt;
* IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map&lt;br /&gt;
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Competency evidence import/export&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are a variety of standards for exchanging competencies evidence including:&lt;br /&gt;
* IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)&lt;br /&gt;
* IMS Learner Information Package Spec (LIP)&lt;br /&gt;
* HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15&lt;br /&gt;
&lt;br /&gt;
IMS RDCEO and LIP recommend formats as shown in the examples below (more [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html IMS LIP home]). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.&lt;br /&gt;
&lt;br /&gt;
 rdceo.identifier = rdceo434323&lt;br /&gt;
 rdceo.title = Identify verbs in simple sentences&lt;br /&gt;
 rdceo.description = “Identify verbs in simple sentences”&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 123&lt;br /&gt;
    statementname = Always&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55435&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 124&lt;br /&gt;
    statementname = Never&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55436&lt;br /&gt;
 rdceo.definition.statement.&lt;br /&gt;
    statementid = 125&lt;br /&gt;
    statementname = Sometimes&lt;br /&gt;
    statementtext = Scale&lt;br /&gt;
    statementtoken = scl55437&lt;br /&gt;
 &lt;br /&gt;
 lip.contenttype.referencial.sourceid.id = jenney_profile&lt;br /&gt;
 lip.identification.cotenttype.referential.indexid = id123&lt;br /&gt;
 lip.identification.name.partname.typename=Jenny &lt;br /&gt;
 lip.competency&lt;br /&gt;
    cotenttype.referential.indexid = j123&lt;br /&gt;
    exrefrecord = rdceo434323&lt;br /&gt;
    description = Always&lt;br /&gt;
&lt;br /&gt;
HR-XML recommends a format like shown below in an example which uses recursive competencies (more [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 here]).&lt;br /&gt;
 &amp;lt;Competency name=&amp;quot;Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Written Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;WRITTENTEST1-A&amp;quot; dateOfIncident=&amp;quot;1995-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;3&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;SEP-equivalent Skill-Level Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;35&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
       &amp;lt;Competency name=&amp;quot;Oral Communication Skills&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyEvidence name=&amp;quot;ManagerObservation&amp;quot; dateOfIncident=&amp;quot;1996-01-01&amp;quot; lastUsed=&amp;quot;2000-01-01&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;1&amp;quot; maxValue=&amp;quot;5&amp;quot; description=&amp;quot;Company XYZ Skill Range&amp;quot;&amp;gt;5&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyEvidence&amp;gt;&lt;br /&gt;
             &amp;lt;CompetencyWeight&amp;gt;&lt;br /&gt;
                    &amp;lt;NumericValue minValue=&amp;quot;0&amp;quot; maxValue=&amp;quot;100&amp;quot;&amp;gt;65&amp;lt;/NumericValue&amp;gt;&lt;br /&gt;
             &amp;lt;/CompetencyWeight&amp;gt;&lt;br /&gt;
       &amp;lt;/Competency&amp;gt;&lt;br /&gt;
 &amp;lt;/Competency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Logging=&lt;br /&gt;
All competency related changes should be logged in history tables.&lt;br /&gt;
&lt;br /&gt;
=Role capabilities and permissions=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Capability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View competency competencies&lt;br /&gt;
|moodle/competency:viewcompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|View hidden competencies&lt;br /&gt;
|moodle/competency:viewhiddencompetencies&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Manage competencies&lt;br /&gt;
|moodle/competency:managecompetencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Example frameworks=&lt;br /&gt;
There are an enormous number of example competency frameworks published online. I&#039;ve randomly selected a comprehensive example [http://education.vermont.gov/ Department of Education for the State of Vermont]&#039;s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading, and detailed [https://docs.moodle.org/en/Development:Competencies_example here] how it would fit into the proposed schema.&lt;br /&gt;
&lt;br /&gt;
=Ideas for the future=&lt;br /&gt;
# Due dates for course completions and outcome completions can be assigned in an individual user&#039;s learning plan.&lt;br /&gt;
# A comment can be added to a user&#039;s learning plan item when a course or outcome is manually added or removed from it.&lt;br /&gt;
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).&lt;br /&gt;
&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Jonathannewman</name></author>
	</entry>
</feed>