| DOSE: |
repeated |
oral |
Coca |
(leaves) |
I'm a college student and my drug use history is as follows: cannabis-smoker for five years, cig. smoker for one year, weekend drinker, psilocybin mushrooms once, amphetamines occasionally for studying (adderal, etc.), vicodin and oxys once a month or so, and a bunch of natural herbs and supplements in small and large experimental doses (kava kava, valerian root for dreaming, etc.)
Anyway, having an interest in the historical/cultural use of plants and substances, whether it be tied to economics, religion, or society in general I began reading about the Incas, the Andes Mountains and other hisorical information relating to the coca plant. I soon decided I would order some tea online from a popular Peruvian vendor; I went with 100 bags.
This experience report will not focus on one particular time, but rather the range of effects I've gotten from the leaf. Also I decided to give a long report of my experience for those who are curious on the exact process of absorption and what effects to expect from given doses.
First of all, when taken as a tea, mate de coca is little more than a good cup of black coffee, although it seems to bring about a distinct 'warmness' in the stomach. When I tried two tea bags steaped in 20 oz of hot water, this effect was pronounced and the warmth spread to the face.
When chewed, the coca is a horse of a different color. First of all, I made sure to acquire some baking soda and magnesium/calcium powder to mix with the leaves for when I chew. Then I rip off the top of the tea bag, and put the ground leaves between my teeth and lip like a dip (though I do not chew tobacco, I'm assuming it's done in exactly the same way) and sprinkle some of the alkaline substance on top. The first time I tried this, I was very surprised how numb it made my lips. Again, I felt the subtleness of the tea effect with a more pronounced feeling of warmth and a stimulation slightly stronger than a cup of coffee. Since some of the alkaloids are absorbed through the mouth AND the stomach, I wait 5 minutes or so before swallowing to allow the coke/other alkaloids to numb my mouth first. I kept doing this in a similar fashion for a few days, having a bag every 6 hours or so but one day I decided to binge and see if I could get a stronger effect.
After reading that each gram of coca leaves contain between 5-10mg of cocaine, I figured if I chewed five or six bags over a forty or fifty minute period, I could absorb the equivalent of a medium sized coke line (30-60mg). Obviously the effects would be much less pronounced given the more sustained blood concentration and I would not get the 'rush' or any of the ego-inflating effects of cocaine concentrate, but I found this a preferable option being very wary of coke addiction, for reasons that I will not go into here.
Anyway, I had six bags (30-60mg cocaine) in one hour, broken down as follows:
T=0 Two bags combined with plenty of alkaline sucked on hard for twenty minutes, then chewed (literally with teeth) to release all possible juices, then swallowed the juices before spitting out the leaves.
T=20 Process repeated with two more bags, spit out in 20 minutes.
T=40 Process repeated with two more bags, spit out in 20 minutes (T=60)
I don't exactly remember when I started feeling the effects or even whether or not they were a result of digestive absorption or mouth absorption, but they were surprisingly significant. I felt a moderate to 'low-strong' physical stimulation, slight jitters, increased heartrate, flushed face, and then surprisingly, a fifteen or twenty minute wave of mild euphoria, similar in intensity to a moderate adderal dose, though much different. This I can only describe is sort of a more 'clear' marijuana-like head buzz but with much more warmth and a weird sort of feeling in the head that I would liken to getting my sinuses unclogged, except in the head (a drippy feeling in the head I guess...hard to explain). In addition nearly my entire mouth was numb and even a lot of my throat, so much that when I drank a glass of ice cold water it tasted warm. My eyes hurt a bit too, maybe as a result of pupil dilation.
Also, having some experience with stimulants (dextroamphetamine, methylphenidate and caffeine) I found the coca stimulation to be somewhat odd. The PHYSICAL stimulation was very strong and I noticed my pushup count and weight lifting stamina increased, which I found surprising. I was equally impressed with the subtle, yet noticable aprodisiac effects, mainly in stamina. These sort of physical effects have a range of 50 minutes to two hours.
Mentally, although my mind feels clear, there is little to no mental benefits and it didnít seem to help my studying like the other stimulants but rather made me want to either exercise or lay back on a chair and listen to some good music. Itís a stimulation that gives me a choice: either I do something physical and hardcore, or I just sit around and enjoy the buzz, unable to find the WILL to do heavy mental work. However, this effect probably varies a lot from person to person.
So here I am now, twelve days later with 20 tea bags left, and I'm still enjoying the effects. However, I don't think I will buy any more anytime soon as I don't want it to become a habit. For one thing it leaves chunks of leaf on my teeth and slightly yellows them so I have to brush after each chew.
As a final note, I let some of my friends try this method, most of them being very skeptical of my described effects and sure enough, they were all surprised by the numbing sensation and the moderate (comparatively mild to coke, as some of them have tried yay itself) buzz and stimulation.
Anyway, if you're like me, drink a ton of coffee, and have a HUGE caffeine tolerance, are sick of the jitters and the minor crash and headache, chewing coca is the way to go. In normal doses, it's mildly stimulating, aids digestion, and stabilizes the mood, all without a crash. If you test the waters, you can absorb enough for a strong, clear buzz. Either way though, chewing is the way to go as it is significantly stronger than drinking it in tea form w/o alkaloids.
Remember: Do it Andean style.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


THE CLASSICS: BLACULA and SCREAM BLACULA SCREAM
I've always wanted to see BLACULA. In high school, I had a mild interest in blaxploitation films, so I saw a few of the seminal works from the genre, as well as a few obscurities like Rudy Ray Moore's AVENGING DISCO GODFATHER. I was obsessed with funk music, so I enjoyed the soundtracks and the campy urban swagger of the protagonists. But horror movies were more my thing, and absurdist humor. When I heard the title BLACULA I thought it was hilarious. But I just never got around to tracking the film down. Years later, I still remember an episode of Whoopi Goldberg's short lived late night talk show, where Stephen King for some reason mentioned that he too had always wanted to see BLACULA. Whoopi said that it was a fascinating movie because Blacula was played exquisitely by a tremendous Shakespearean actor, but she said that the movie itself was really bad. Well, Whoopi was half right, as I discovered when I finally got around to renting the movie and promptly fell in love. BLACULA is a surprisingly effective little b-movie, with a unique cultural perspective and a sense of humor that still works today. Like a black Vincent Price, William Marshall (who I know primarily as the King of Cartoons on PEE WEE'S PLAYHOUSE) brings great dignity to his performance as the title character. Unique among blaxploitation films, BLACULA puts an afrocentric spin on the vampire myth and manages to make a cape-wearing bloodsucker seem right at home among afro-sporting urban hipsters. The film opens with a nicely crafted, Hammer style prologue between the African prince Mamuwalde and the eurocentric Count Dracula. Mamuwalde and his wife Lyuka (played by Vonetta McGee) have come as diplomats, imploring the Count to stop participating in the slave trade. But the white supremacist Dracula is insulted by the request and attacks his guests. Mamuwalde attempts some '70s cop show style fisticuffs - the first sign that this film will not continue in an entirely classical vein - but ends up bitten, locked in a coffin, and cursed with the epithet "Blacula". Suddenly, we are thrust into stark black and white animated credits and a predictably funky theme song. Voila - the tone has been set for a tremendously entertaining, uniquely appealing cult masterpiece. And when the real story begins, with the undead Mamuwalde stalking a black neighborhood in the '70s, it never lets up.  Soon the antique dealers are dead and the prince is revived. Mingling with humans as Mamuwalde, he discovers a neighborhood beauty who he believes is the reincarnation of his wife. The story unfolds pretty much as you'd expect, with Mamuwalde trying to reunite with his soul mate, leaving a trail of bodies that end up disappearing from their coffins, and being tracked by cops who feel silly for believing in vampires. What's surprising about BLACULA is the tone and the masterful execution. I expected to laugh at this movie, not with it. But I really liked Mamuwalde, despite his wicked deeds, and believed in the film's consistent horror atmosphere. When I laughed, it was at the film's mercy. There are some very funny, out of the blue jokes that keep you on your toes.
I enjoyed BLACULA so much that I literally ran out and rented the sequel, SCREAM BLACULA SCREAM. The details of my sweaty two and a half mile journey to Hollywood Video shall be chronicled in a later writing. (Okay, I made that up, I didn't really run. But I did go back and rent the sequel before even returning the original.) I knew that this followup wasn't supposed to be as good as its predecessor, but I was clamoring for some more of that Mamuwalde magic, and I figured having Pam Grier in it was a good sign. To my delight, the sequel is every bit as good a film as the original. I have a feeling that critics at the time enjoyed BLACULA, but had grown tired of that style of filmmaking by the time the sequel was released. Therefore, they remembered their enjoyment of the original and assumed the sequel just wasn't as good. Seeing them for the first time side by side, though, they're of one piece. The sequel shares the strong atmosphere and the unexpected humor of the original. It throws in a new setting, among an American voodoo cult, and an added dimension of tragedy to Mamuwalde. The afrocentric themes are better developed this time around. Mamuwalde admires African-Americans who are interested in their heritage, and shares his knowledge with them.  In one memorable scene, Mamuwalde is enraged by two pimps who try to mug him. Before beating them to death, he lectures them from the point of view of an African prince who fought against slavery. He angrily accuses them of enslaving their sisters and imitating their slavemasters. William Marshall completely sells these lines, bringing to them an overwhelming righteousness. You want to apologize to him, even if you're not a pimp. Like the first film, SCREAM BLACULA SCREAM has a charismatic black cop who leads the investigation of Mamuwalde's killing spree. And again, there is a skeptical white cop who almost impedes the investigation. The two have a great chemistry here, teasing each other, making you understand their friendship even though the white guy's not the one you're rooting for. Things get really good when Mamuwalde enlists the voodoo priestess played by Pam Grier to reverse Dracula's curse. He is fiercely protective of Grier, because he knows she's the only one with the ability to stop the madness and return him to his old self. When the monumental voodoo ritual is interrupted before completion, Mamuwalde goes over the edge. He wastes his last chance for redemption on an insane rampage where he, for the first time in the series, identifies himself as "Blacula."
Marshall seems to have contributed a lot more to the BLACULA films than his great performances. In the book _What It Is… What It Was_ (a beautiful collection of poster art from black films of the '70s) he reveals that in the original script, Mamuwalde was named "Andrew Brown", the same name as Andy in Amos 'n Andy.  Instead, he suggested the "African hero who had never been subjected to slavery" who ultimately became the subject of the film. It is largely this challenging of stereotypes and respect for African heritage that makes the series so unique. Other blaxploitation films have presented strong, African-American heroes and heroines, but few have incorporated cultural issues so successfully into pulpy b-movie theatrics. These are movies that make you regret that you can't go out and rent more like them.
Bryan Frankenseuss Theiss http://www.bucketheadland.com/visitorcenter/
"Shit, I'm the *reverse* of jiggy." --Chuck D
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


--- layout: post title: AOL re-designs using web standards tags: [] status: publish type: post published: true meta: {} ---
The top news for me today was that AOL have re-designed and re-launched using a table-less layout and CSS. Another notch for the web standards based design!!! On this note I can't remember if posted this previously, but you can look up the latest standards based web sites, by visiting the Daily Standards.


This small town, on the east cost of Martinique, is a centre for the sugarcane and pineapple industries.
Position 14° 45'30"N, 060° 57'33"W (entrance to harbour)
There is a Customs Office in the town.
Stay in the centre of the harbour as it shallows along the shores.
Last updated March 2016.


About Us
Sahodaya, is a concept literally meaning ‘rising together’, it came into existence in the year 1986, to facilitate synergy of ideas among the school of CBSE, for excellence in education. Sahodaya School complexes is a group of neighbourhood schools voluntarily coming to share their innovative practices in all aspects of school education including curriculum design, evaluation, and pedagogy and also providing support services for teachers and students.
This concept is developed by the Central Board of Secondary Education (CBSE) New Delhi, the largest governing body of academics with nearly 18,000 schools affiliated to it within the country as well as abroad functioning under the Ministry of HRD, Govt. of India. It is a unique platform for all CBSE affiliated Schools to share their experience and to work jointly for scholastic and co-scholastic excellence.
In 1987, CBSE brought out a publication titled, “Freedom to learn and freedom to grow through Sahodaya School Complexes” (SSCs) which characterized “SSCs” as a voluntary association of schools in a given area, who through mutual choices, have agreed to come together for a systematic and system-wide renewal of the total educational process.
“Sahodaya” signifies rising together, it identified six areas, to begin with, for collaboration amongst schools of its complex:


lox, eggs & onions
with toasted shissel rye
appetizing since 1924
served all the time
with toasted shissel rye
with toasted pumpernickel
matzo, egg, applesauce, sour cream
sunny side up eggs, gaspe nova salmon, potato latkes
poached eggs, scottish smoked salmon, sautéed spinach, hollandaise, challah
gaspe nova salmon, cream cheese
custard-like egg, caviar with challah
small dishes
salmon roe and creme fraiche
buckwheat, caramelized onion, bowtie egg noodles
whitefish & baked salmon salad, horseradish dill cream cheese, bagel toast
pastrami-cured salmon, muenster cheese, sauerkraut, mustard, pickle, pretzel roll
pickled vegetables, pickles from the barrel
here to share
with cream cheese, tomato, capers & new potato salad
3 types of smoked fish and sable
3 types of smoked salmon, capers, dille and a bread basket
gaspe nova salmon, private stock sturgeon, wild alaskan salmon roe
slirp it, we like that
served chilled
collard greens
with citrus dressing
with mustard dressing
with buttermilk dressing
open-faced sandwiches
gaspe nova smoked salmon, cream cheese, tomato, onion, capers
sturgeon, butter, tomato, onion, capers
smoked sable, goat cream cheese, tomato, onion, capers
kippered salmon, cream cheese, tomato, onion, capers
dessert, but different
chocolate babka and berries
grapefruit with maple syrup
halvah, sesame, salted caramel
farmer cheese, raisins, egg noodles


KERALA TOURISM
Home
(current)
Login
Districts
Trivandrum
Kollam
Alappuzha
Pathanamthitta
Kottayam
Idukki
Ernakulam
Thrissur
Palakkad
Malappuram
Kozhikod
Wayanad
Kannur
Kasargod
Signup
About Us


Property Drawers can be used to customize the look of certain controls in the Inspector window by using attributes on your scripts, or by controlling how a specific Serializable
class should look.
Property Drawers have two uses:
If you have a custom Serializable class, you can use a Property Drawer to control how it looks in the Inspector. Consider the Serializable class Ingredient in the script examples below (Note: These are not editor scripts. Property attribute classes should be placed in a regular script file):
JavaScript (example):
enum IngredientUnit { Spoon, Cup, Bowl, Piece }
// Custom serializable class
class Ingredient extends System.Object {
var name : String;
var amount : int = 1;
var unit : IngredientUnit;
}
var potionResult : Ingredient;
var potionIngredients : Ingredient[];
function Update () {
// Update logic here...
}
C# (example):
using UnityEngine;
using System.Collections;
public enum IngredientUnit { Spoon, Cup, Bowl, Piece }
// Custom serializable class
[System.Serializable]
public class Ingredient : System.Object {
string name;
int amount = 1;
IngredientUnit unit;
}
public class Recipe : MonoBehaviour {
Ingredient potionResult;
Ingredient[] potionIngredients;
void Update() {
// Update logic here...
}
}
using UnityEngine;
using System.IO;
class Testing : MonoBehaviour{
enum IngredientUnit { Spoon, Cup, Bowl, Piece }
// Custom serializable class
[System.Serializable]
class Ingredient{
string name;
int amount = 1;
IngredientUnit unit;
}
Ingredient potionResult;
Ingredient[] potionIngredients;
void Update () {
// Update logic here...
}
}
Using a custom Property Drawer, every appearance of the Ingredient class in the Inspector can be changed. Compare the look of the Ingredient properties in the Inspector without and with a custom Property Drawer:
You can attach the Property Drawer to a Serializable class by using the CustomPropertyDrawer attribute and pass in the type of the Serializable class that it’s a drawer for.
JavaScript (example):
@CustomPropertyDrawer(Ingredient)
class IngredientDrawer extends PropertyDrawer {
// Draw the property inside the given rect
function OnGUI (position : Rect, property : SerializedProperty, label : GUIContent) {
// Using BeginProperty / EndProperty on the parent property means that
// prefab override logic works on the entire property.
EditorGUI.BeginProperty (position, label, property);
// Draw label
position = EditorGUI.PrefixLabel (position, GUIUtility.GetControlID (FocusType.Passive), label);
// Don't make child fields be indented
var indent = EditorGUI.indentLevel;
EditorGUI.indentLevel = 0;
// Calculate rects
var amountRect = new Rect (position.x, position.y, 30, position.height);
var unitRect = new Rect (position.x+35, position.y, 50, position.height);
var nameRect = new Rect (position.x+90, position.y, position.width-90, position.height);
// Draw fields - passs GUIContent.none to each so they are drawn without labels
EditorGUI.PropertyField (amountRect, property.FindPropertyRelative ("amount"), GUIContent.none);
EditorGUI.PropertyField (unitRect, property.FindPropertyRelative ("unit"), GUIContent.none);
EditorGUI.PropertyField (nameRect, property.FindPropertyRelative ("name"), GUIContent.none);
// Set indent back to what it was
EditorGUI.indentLevel = indent;
EditorGUI.EndProperty ();
}
}
C# (examples):
using UnityEngine;
using UnityEditor;
using System.Collections;
[CustomPropertyDrawer(typeof(Ingredient))]
public class IngredientDrawer : PropertyDrawer {
// Draw the property inside the given rect
void OnGUI(Rect position, SerializedProperty property, GUIContent label) {
// Using BeginProperty / EndProperty on the parent property means that
// prefab override logic works on the entire property.
EditorGUI.BeginProperty(position, label, property);
// Draw label
position = EditorGUI.PrefixLabel(position, GUIUtility.GetControlID(FocusType.Passive), label);
// Don't make child fields be indented
int indent = EditorGUI.indentLevel;
EditorGUI.indentLevel = 0;
// Calculate rects
Rect amountRect = new Rect(position.x, position.y, 30, position.height);
Rect unitRect = new Rect(position.x+35, position.y, 50, position.height);
Rect nameRect = new Rect(position.x+90, position.y, position.width-90, position.height);
// Draw fields - passs GUIContent.none to each so they are drawn without labels
EditorGUI.PropertyField(amountRect, property.FindPropertyRelative ("amount"), GUIContent.none);
EditorGUI.PropertyField(unitRect, property.FindPropertyRelative ("unit"), GUIContent.none);
EditorGUI.PropertyField(nameRect, property.FindPropertyRelative ("name"), GUIContent.none);
// Set indent back to what it was
EditorGUI.indentLevel = indent;
EditorGUI.EndProperty();
}
}
using UnityEngine;
using UnityEditor;
using System.Collections;
[CustomPropertyDrawer (Ingredient)]
class IngredientDrawer : PropertyDrawer {
// Draw the property inside the given rect
void OnGUI (Rect position, SerializedProperty property, GUIContent label) {
// Using BeginProperty / EndProperty on the parent property means that
// prefab override logic works on the entire property.
EditorGUI.BeginProperty (position, label, property);
// Draw label
position = EditorGUI.PrefixLabel (position, GUIUtility.GetControlID (FocusType.Passive), label);
// Don't make child fields be indented
var indent = EditorGUI.indentLevel;
EditorGUI.indentLevel = 0;
// Calculate rects
Rect amountRect = new Rect (position.x, position.y, 30, position.height);
Rect unitRect = new Rect (position.x+35, position.y, 50, position.height);
Rect nameRect = new Rect (position.x+90, position.y, position.width-90, position.height);
// Draw fields - passs GUIContent.none to each so they are drawn without labels
EditorGUI.PropertyField (amountRect, property.FindPropertyRelative ("amount"), GUIContent.none);
EditorGUI.PropertyField (unitRect, property.FindPropertyRelative ("unit"), GUIContent.none);
EditorGUI.PropertyField (nameRect, property.FindPropertyRelative ("name"), GUIContent.none);
// Set indent back to what it was
EditorGUI.indentLevel = indent;
EditorGUI.EndProperty ();
}
}
The other use of Property Drawer is to alter the appearance of members in a script that have custom Property Attributes. Say you want to limit floats or integers in your script to a certain range and show them as sliders in the Inspector. Using the built-in PropertyAttribute called RangeAttribute you can do just that:
JavaScript (example):
// Show this float in the Inspector as a slider between 0 and 10
@Range (0.0, 10.0)
var myFloat = 0.0;
//C# example.
[Range(0.0f, 10.0f)]
public float myFloat = 0.0f;
C# (example):
// Show this float in the Inspector as a slider between 0 and 10
[Range(0.0f, 10.0f)]
float myFloat = 0.0f;
You can make your own PropertyAttribute as well. We’ll use the code for the RangeAttribute as an example. The attribute must extend the PropertyAttribute class. If you want, your property can take parameters and store them as public member variables.
JavaScript (example):
class RangeAttribute extends PropertyAttribute {
var min : float;
var max : float;
function RangeAttribute (min : float, max : float) {
this.min = min;
this.max = max;
}
}
C# (examples):
using UnityEngine;
using System.Collections;
public class RangeAttribute : PropertyAttribute {
public float min;
public float max;
public RangeAttribute (float min, float max) {
this.min = min;
this.max = max;
}
}
using UnityEngine;
using System.Collections;
public class Testing : PropertyAttribute
{
float min;
float max;
void RangeAttribute (float min, float max) {
this.min = min;
this.max = max;
}
}
Now that you have the attribute, you need to make a Property Drawer that draws properties that have that attribute. The drawer must extend the PropertyDrawer class, and it must have a CustomPropertyDrawer attribute to tell it which attribute it’s a drawer for.
The property drawer class should be placed in an editor script, inside a folder called Editor.
JavaScript (example):
// Tell the RangeDrawer that it is a drawer for properties with the RangeAttribute.
@CustomPropertyDrawer (RangeAttribute)
class RangeDrawer extends PropertyDrawer {
// Draw the property inside the given rect
function OnGUI (position : Rect, property : SerializedProperty, label : GUIContent) {
// First get the attribute since it contains the range for the slider
var range : RangeAttribute = attribute as RangeAttribute;
// Now draw the property as a Slider or an IntSlider based on whether it's a float or integer.
if (property.propertyType == SerializedPropertyType.Float)
EditorGUI.Slider (position, property, range.min, range.max, label);
else if (property.propertyType == SerializedPropertyType.Integer)
EditorGUI.IntSlider (position, property, range.min, range.max, label);
else
EditorGUI.LabelField (position, label.text, "Use Range with float or int.");
}
}
C# (examples):
using UnityEngine;
using UnityEditor;
using System.Collections;
// Tell the RangeDrawer that it is a drawer for properties with the RangeAttribute.
[CustomPropertyDrawer(typeof(RangeAttribute))]
public class RangeDrawer : PropertyDrawer {
// Draw the property inside the given rect
void OnGUI (Rect position, SerializedProperty property, GUIContent label) {
// First get the attribute since it contains the range for the slider
RangeAttribute range = attribute as RangeAttribute;
// Now draw the property as a Slider or an IntSlider based on whether it's a float or integer.
if (property.propertyType == SerializedPropertyType.Float)
EditorGUI.Slider(position, property, range.min, range.max, label);
else if (property.propertyType == SerializedPropertyType.Integer)
EditorGUI.IntSlider(position, property, (int) range.min, (int) range.max, label);
else
EditorGUI.LabelField(position, label.text, "Use Range with float or int.");
}
}
Note that for performance reasons, EditorGUILayout functions are not usable with Property Drawers.


This module implements a cookie that is not alterable from the client because it adds a checksum the server checks for. You can use it as session replacement if all you have is a user id or something to mark a logged in user.
Keep in mind that the data is still readable from the client as a normal cookie is. However you don’t have to store and flush the sessions you have at the server.
Example usage:
>>> from werkzeug.contrib.securecookie import SecureCookie
>>> x = SecureCookie({"foo": 42, "baz": (1, 2, 3)}, "deadbeef")
Dumping into a string so that one can store it in a cookie:
>>> value = x.serialize()
Loading from that string again:
>>> x = SecureCookie.unserialize(value, "deadbeef")
>>> x["baz"]
(1, 2, 3)
If someone modifies the cookie and the checksum is wrong the unserialize method will fail silently and return a new empty SecureCookie object.
Keep in mind that the values will be visible in the cookie so do not store data in a cookie you don’t want the user to see.
If you are using the werkzeug request objects you could integrate the secure cookie into your application like this:
from werkzeug import BaseRequest, cached_property
from werkzeug.contrib.securecookie import SecureCookie
# don't use this key but a different one; you could just use
# os.unrandom(20) to get something random
SECRET_KEY = '\xfa\xdd\xb8z\xae\xe0}4\x8b\xea'
class Request(BaseRequest):
@cached_property
def client_session(self):
data = self.cookies.get('session_data')
if not data:
return SecureCookie(secret_key=SECRET_KEY)
return SecureCookie.unserialize(data, SECRET_KEY)
def application(environ, start_response):
request = Request(environ, start_response)
# get a response object here
response = ...
if request.client_session.should_save:
session_data = request.client_session.serialize()
response.set_cookie('session_data', session_data,
httponly=True)
return response(environ, start_response)
A less verbose integration can be achieved by using shorthand methods:
class Request(BaseRequest):
@cached_property
def client_session(self):
return SecureCookie.load_cookie(self, secret_key=COOKIE_SECRET)
def application(environ, start_response):
request = Request(environ, start_response)
# get a response object here
response = ...
request.client_session.save_cookie(response)
return response(environ, start_response)
Represents a secure cookie. You can subclass this class and provide an alternative mac method. The import thing is that the mac method is a function with a similar interface to the hashlib. Required methods are update() and digest().
Example usage:
>>> x = SecureCookie({"foo": 42, "baz": (1, 2, 3)}, "deadbeef")
>>> x["foo"]
42
>>> x["baz"]
(1, 2, 3)
>>> x["blafasel"] = 23
>>> x.should_save
True
| Parameters: |
|
|---|
Whenever an item on the cookie is set, this attribute is set to True. However this does not track modifications inside mutable objects in the cookie:
>>> c = SecureCookie()
>>> c["foo"] = [1, 2, 3]
>>> c.modified
True
>>> c.modified = False
>>> c["foo"].append(4)
>>> c.modified
False
In that situation it has to be set to modified by hand so that should_save can pick it up.
Loads a SecureCookie from a cookie in request. If the cookie is not set, a new SecureCookie instanced is returned.
| Parameters: |
|
|---|
Quote the value for the cookie. This can be any object supported by serialization_method.
| Parameter: | value – the value to quote. |
|---|
Saves the SecureCookie in a cookie on response object. All parameters that are not described here are forwarded directly to set_cookie().
| Parameters: |
|
|---|
Serialize the secure cookie into a string.
If expires is provided, the session will be automatically invalidated after expiration when you unseralize it. This provides better protection against session cookie theft.
| Parameter: | expires – an optional expiration date for the cookie (a datetime.datetime object) |
|---|
Unquote the value for the cookie. If unquoting does not work a UnquoteError is raised.
| Parameter: | value – the value to unquote. |
|---|
Load the secure cookie from a serialized string.
| Parameters: |
|
|---|---|
| Returns: | a new SecureCookie. |


Contact
E-mail: rj722 [AT] protonmail [DOT] com
GPG: C984 E9A2 D2E3 E581 4F3E DB1E DD53 53EC 154B 6811
Twitter: @rahul722j
IRC: RJ722 on irc.freenode.net
About me
I am Rahul Jha (~ RJ722). I am currently studying Electronics Engineering at Zakir Husain College of Engineering and Technology
I learn, I write, I speak - It’s mostly about open source, python or robotics.
Robotics
I took up Engineering because of my passion for Autonomous Robots - They fascinate me, leave me overwhelmed every time I realise the complicated intricacies of machinery which empowers our brain.
Open Source
Other than learning/pondering about Robots, I help maintain vulture, a tool which helps find dead code in Python Programs, and coala, a language independent static analysis tool and a linter.
I was a Google Summer of Code student with coala in 2017 and again in 2018, wherein I worked on Vulture - which was a great experience.
I believe that pursuing open source is one of the best ways I can give back to the society, passing on what I learned.
Reading
I like to learn new things and that is why I read, a lot about tech and yet more about the open source movement. I also like poetry and plan to start reading literature soon.
Meetups and Conferences
I’ve a lot of fun at conferences - whether I am an attendee or an organizer, either way I get to meet and learn from like minded people. I also host regular meetups through AMU-OSS, where anyone from the audience is welcome to come and speak about whatever she’s been working on lately.
I was invited as a speaker in PyCon India 2017 where I spoke about “Reducing Dead Code Ratio of Python Projects using vulture”. In the same conference, I also delivered a lightening talk on “coala - What, Why and How?” and met quite a few celebrities in the Python community and made a lot of friends during the same conference.
I also gave a similar talk, titled “Scavenging Dead Code using Vulture” at DevConf, India 2018 and was also invited to DevConf, Czech but could not visit due to logistics.
Other ‘fun’ facts about me
I love tweaking themes and desktop environments until I make them ugly.
I can touch type with an average speed of around 60-65 WPM.
I like Urdu shayari.


Copyright (c) 2000 Joćo Pedro Neto
After seeing Epaminondas, I associate the piece movements with the idea of shifting on 2D. There are another two operations, namely, rotation and scaling. I took the latter and created a new abstract game (perhaps rotation can also be used to create another game...). Besides that connection, Epaminondas is based on the phalanx formation. There are also tactical maneuvers based on square formations, something that will appear in Scalus.
The game is played a board with 19x10 intersections. Each player has 16 stones. There are two pairs of special cells called the Headquarters (Black HQ's at e2 and f2, and White HQ's at e18 and f18). The initial setup follows:
|
Pivot moves
| Lines of n
stones and squares of n.n stones are special cases of rectangles. The player chooses the
pivot stone and scale the structure by two. Seeing from up to down, there are two
line and one square expansions. From down to up, there are three contractions. Every opponent piece inside the destination cells are captured and removed from the game. Any friendly piece on those same cells will abort the expansion/contraction movement. Expanding stone structures may jump other stones. However, contraction is only possible, if there are no friendly pieces in-between (any enemy stones in-between are captured if they stay at some destination cell, or jumped otherwise). |
Two more examples: a line of 3 stones with a central pivot, and a 3.2 rectangle. Once again, seeing from up to down means an expansion move, down to up, a contraction move. Notation: For line moves, just state the stones that define that line and include the pivot between ()s. For rectangle moves, state all four edges including the pivot between ()s. |
Special no pivot moves
These are the two special moves where the player does not include the pivot. Two line scaling can also be done on diagonals. No pivot moves are described by appending an empty pair of () |
Move Examples
Black starts with a four line expansion 1. e4-e7(e4) and White with a 3x3 square expansion 1... f15-d15-d13-f13(f15) [diagram 1]. After that, Black makes a single move 2. e8-f9 and White answers with a 3x3 square contraction 2... b11-f11-f15-b15(d11) [diagram 2]. Then Black captures white stone at d11 by expanding his f9-e10 double line, 3. f9-e10(f9) [diagram 3]. Now, White may capture d11 black stone with d13-d12(d13) or d13-d12() or d13-d12-e12-e13(d13) or d13-d12-c12-c13(d13) or even with c13-e13-e12-c12(d13)
Other Patterns[optional rule - not tested]
|
|


The menu Options contains the following commands:
| Plot Options | Basic settings for graphic outputs. |
| Analysis Options | Basic settings for automatic analysis techniques. |
| Text Options | Basic settings regarding the retention of formatting in classical encryption methods. |
| Starting Options | Basic settings for the start of CrypTool. |


""" For types associated with installation schemes. For a general overview of available schemes and their context, see https://docs.python.org/3/install/index.html#alternate-installation. """ class Scheme(object): """A Scheme holds paths which are used as the base directories for artifacts associated with a Python package. """ def __init__( self, platlib, # type: str purelib, # type: str headers, # type: str scripts, # type: str data, # type: str ): self.platlib = platlib self.purelib = purelib self.headers = headers self.scripts = scripts self.data = data


A workflow step is an executable element of a workflow. It specifies the underlying process implementation (such as CommandLineTool) in the run field and connects the input and output parameters of the underlying process to workflow parameters.
WorkflowStepInputList(...) WorkflowStepOutputList(...) WorkflowStepList(...)
| ... | element or list of the element. |
|---|
a WorkflowStep object or subclass object.
id
[character] The unique identifier for this workflow step.
inputs
(WorkflowStepInputList) Defines the input parameters of the workflow step. The process is ready to run when all required input parameters are associated with concrete values. Input parameters include a schema for each parameter and is used to validate the input object, it may also be used build a user interface for constructing the input object.
outputs
(WorkflowStepOutputList) Defines the parameters representing the output of the process. May be used to generate and/or validate the output object.
requirements
[ProcessRequirement] Declares requirements that apply to either the runtime environment or the workflow engine that must be met in order to execute this workflow step. If an implementation cannot satisfy all requirements, or a requirement is listed which is not recognized by the implementation, it is a fatal error and the implementation must not attempt to run the process, unless overridden at user option.
hints
[ANY] Declares hints applying to either the runtime environment or the workflow engine that may be helpful in executing this workflow step. It is not an error if an implementation cannot satisfy all hints, however the implementation may report a warning.
label
[character] A short, human-readable label of this process object.
description
[character] A long, human-readable description of this process object.
run
(CommandLineToolORExpressionToolORWorkflow) Specifies the process to run.
scatter
[character]
scatterMethod
[ScatterMethod] Required if scatter is an array of more than one element.
The input shall be an array consisting of exactly one entry for each input link. If merge_nested is specified with a single link, the value from the link is wrapped in a single-item list.
1) The source and sink parameters must be compatible types, or the source type must be compatible with single element from the "items" type of the destination array parameter. 2) Source parameters which are arrays are concatenated; source parameters which are single element types are appended as single elements.
id
(character) A unique identifier for this workflow input parameter.
source
[character] Specifies one or more workflow parameters that will provide input to the underlying process parameter.
linkMerge
[LineMergeMethod] The method to use to merge multiple inbound links into a single array. If not specified, the default method is merge_nested:
default
[ANY] The default value for this parameter if there is no source field.
id
(character) A unique identifier for this workflow output parameter. This is the identifier to use in the source field of WorkflowStepInput to connect the output value to downstream parameters.
To use scatter/gather, ScatterFeatureRequirement must be specified in the workflow or workflow step requirements.
A "scatter" operation specifies that the associated workflow step or subworkflow should execute separately over a list of input elements. Each job making up a scatter operaution is independent and may be executed concurrently.
The scatter field specifies one or more input parameters which will be scattered. An input parameter may be listed more than once. The declared type of each input parameter is implicitly wrapped in an array for each time it appears in the scatter field. As a result, upstream parameters which are connected to scattered parameters may be arrays.
All output parameters types are also implicitly wrapped in arrays; each job in the scatter results in an entry in the output array.
If scatter declares more than one input parameter, scatterMethod describes how to decompose the input into a discrete set of jobs.
dotproduct specifies that each the input arrays are aligned and one element taken from each array to construct each job. It is an error if all input arrays are not the same length.
nested_crossproductspecifies the cartesian product of the inputs, producing a job for every combination of the scattered inputs. The output must be nested arrays for each level of scattering, in the order that the input arrays are listed in the scatter field.
flat_crossproductspecifies the cartesian product of the inputs, producing a job for every combination of the scattered inputs. The output arrays must be flattened to a single level, but otherwise listed in the order that the input arrays are listed in the scatter field.
To specify a nested workflow as part of a workflow step, SubworkflowFeatureRequirement must be specified in the workflow or workflow step requirements.
ws <- WorkflowStepList(WorkflowStep( id = "step1", label = "align-and-sort", description = "align and sort", inputs = WorkflowStepInputList( WorkflowStepInput(id = "id1"), WorkflowStepInput(id = "id2") ) ))


ScratchVerifier Admin
Main Panel
Lookup Client By UID
Lookup
(Un)ban Username
Unban
Ban
All
Ban
Ratelimit Change
Unban
Fetch
ID
Username
Date
Log Type
Data
Return to Site
Ban List


function Add: PPaintStage;
Adds a new stage to the list and returns pointer to stage record.
By default, new stages have their RunTime member set to True.
[See also]: Delete, Insert


Communication & Team Management
Please use the free version of the software. We do not offer financial support for using the following software.
Tools You Can Use
Please use the free version of the software. We do not offer financial support for using the following software.


Copyright © 2009-2010 Marc Worrell
Behaviours: gen_server.
Authors: Marc Worrell (marc@worrell.nl).
| cleanup/5 | Cleanup process for the depcache. |
| cleanup/9 | |
| code_change/3 | |
| flush/1 | Flush all keys from the caches. |
| flush/2 | Flush the key and all keys depending on the key. |
| flush_process_dict/0 | Flush all items memoized in the process dictionary. |
| get/2 | Fetch the key from the cache, return the data or an undefined if not found (or not valid). |
| get/3 | Fetch the key from the cache, return the data or an undefined if not found (or not valid). |
| get_subkey/3 | Fetch the key from the cache, return the data or an undefined if not found (or not valid). |
| get_wait/2 | Fetch the key from the cache, when the key does not exist then lock the entry and let the calling process insert the value. |
| handle_call/3 | Return the ets tables used by the cache. |
| handle_cast/2 | |
| handle_info/2 | |
| in_process/0 | Check if we use a local process dict cache. |
| in_process/1 | Enable or disable the in-process caching using the process dictionary. |
| init/1 | Initialize the depcache. |
| memo/2 | |
| memo/3 | |
| memo/4 | |
| memo/5 | |
| set/3 | Add the key to the depcache, hold it for 3600 seconds and no dependencies. |
| set/4 | Add the key to the depcache, hold it for MaxAge seconds and no dependencies. |
| set/5 | Add the key to the depcache, hold it for MaxAge seconds and check the dependencies. |
| size/1 | Return the total memory size of all stored terms. |
| start_link/1 | |
| terminate/2 | |
| tick/1 | Periodic tick used for incrementing the clock. |
cleanup(Pid, MetaTable, DepsTable, DataTable, MemoryMax) -> any()
Cleanup process for the depcache. Periodically checks a batch of depcache items for their validity. Asks the depcache server to delete invalidated items. When the load of the data table is too high then This cleanup process starts to delete random entries. By using a random delete we don't need to keep a LRU list, which is a bit expensive.
cleanup(Pid, MetaTable, DepsTable, DataTable, MemoryMax, SlotNr, Now, Mode, Ct) -> any()
code_change(OldVersion, State, Extra) -> any()
flush(Context::#context{}) -> void()
Flush all keys from the caches
flush(Key, Context::#context{}) -> void()
Flush the key and all keys depending on the key
flush_process_dict() -> any()
Flush all items memoized in the process dictionary.
get(Key, Context) -> {ok, Data} | undefined
Fetch the key from the cache, return the data or an undefined if not found (or not valid)
get(Key, SubKey, Context) -> {ok, Data} | undefined
Fetch the key from the cache, return the data or an undefined if not found (or not valid)
get_subkey(Key, SubKey, Context) -> {ok, Data} | undefined
Fetch the key from the cache, return the data or an undefined if not found (or not valid)
get_wait(Key, Context) -> {ok, Data} | undefined
Fetch the key from the cache, when the key does not exist then lock the entry and let the calling process insert the value. All other processes requesting the key will wait till the key is updated and receive the key's new value.
handle_call(X1, From, State) -> any()
Return the ets tables used by the cache
handle_cast(Msg, State) -> any()
handle_info(Msg, State) -> any()
in_process() -> any()
Check if we use a local process dict cache
in_process(X1) -> any()
Enable or disable the in-process caching using the process dictionary
init(SiteProps) -> {ok, State}
Initialize the depcache. Creates ets tables for the deps, meta and data. Spawns garbage collector.
memo(Function, Context) -> any()
memo(Function, MaxAge, Context) -> any()
memo(F, Key, MaxAge, Context) -> any()
memo(F, Key, MaxAge, Dep, Context) -> any()
set(Key, Data, Context) -> void()
Add the key to the depcache, hold it for 3600 seconds and no dependencies
set(Key, Data, MaxAge, Context) -> void()
Add the key to the depcache, hold it for MaxAge seconds and no dependencies
set(Key, Data, MaxAge, Depend, Context) -> void()
Add the key to the depcache, hold it for MaxAge seconds and check the dependencies
size(Context::#context{}) -> int()
Return the total memory size of all stored terms
start_link(SiteProps) -> any()
terminate(Reason, State) -> any()
tick(Context::#context{}) -> none()
Periodic tick used for incrementing the clock
Generated by EDoc, Apr 11 2012, 20:41:27.


v3 Storage External API
Table of contents
- Introduction
- Global information
- Permissions
- Study commands
- /study/schema
- /study/delete
- /study/delete/image/
- /study/delete/images/
- /study/count
- /study/tag
- /study/attribute
- /study/image/phi
- /study/phi
- /study/thumbnail
- /study/diagnostic
- /study/frame
- /study/frame/tiff
- /study/pdf
- /study/json
- /study/image/json
- /study/attachment
- /study/latest
- /study/post/attachment
- /study/attachment/image
- /study/download
- /study/delete/attachment
- /study/video
- /study/split
- /study/merge
- /study/anonymize
- /study/crop
- /study/cache
- /study/hl7/sr
- /study/clone
- /study/create/rt
- /dicomweb/studies/series/instances/metadata
- /dicomweb/studies/series/metadata
- /dicomweb/studies/metadata
- Image commands
Introduction
The API is implemented as a REST like interface. A call is made to a URL using either a POST, a GET or DELETE. The URL will return either a HTTP error code, a JSON data structure or a byte stream. All URLs below need to be prefixed with {engine_fqdn}/api/v3/storage.Global information
- Italic words represent fields names
- Fields are required unless noted as optional
- Flags are numeric fields with a 1 or 0 value for true or false
Permissions
A role has the following permission flags. The default roles are Admin, User, PHR and Anonymous and have the following settings.
| Flag | Admin Value |
User Value |
PHR Value |
Anonymous Value |
Description |
|---|---|---|---|---|---|
| account_edit | 1 | 0 | 0 | 0 | Can they add and edit the account |
| account_view | 1 | 0 | 0 | 0 | Can they view account information |
| account_user_view | 1 | 0 | 0 | 0 | Can they view or list the users in the account |
| account_user_edit | 1 | 0 | 0 | 0 | Can they add, edit and remove users from an account |
| user_edit | 0 | 0 | 0 | 0 | Can they create and edit users on the grid |
| destination_view | 1 | 0 | 0 | 0 | Can they view or list the destinations in the account |
| destination_edit | 1 | 0 | 0 | 0 | Can they add, edit and remove destinations from an account |
| destination_search | 0 | 0 | 0 | 0 | Can they search a destination |
| destination_search_mwl | 0 | 0 | 0 | 0 | Can they run a modality worklist search on a destination |
| group_view | 1 | 0 | 0 | 0 | Can they view or list the groups in the account |
| group_edit | 1 | 0 | 0 | 0 | Can they add, edit and remove groups from an account |
| location_view | 1 | 0 | 0 | 0 | Can they view or list the locations in the account |
| location_edit | 1 | 0 | 0 | 0 | Can they add, edit and remove locations from an account |
| role_view | 1 | 0 | 0 | 0 | Can they view or list the roles in the account |
| role_edit | 1 | 0 | 0 | 0 | Can they add, edit and remove roles from an account |
| route_view | 1 | 0 | 0 | 0 | Can they view or list the routes in the account |
| route_edit | 1 | 0 | 0 | 0 | Can they add, edit and remove routes from an account |
| node_view | 1 | 0 | 0 | 0 | Can they view or list the nodes in the account |
| node_edit | 1 | 0 | 0 | 0 | Can they add, edit and remove nodes from an account |
| study_approve | 1 | 0 | 1 | 0 | Can they approve or reject shared studies in the account, group, location |
| study_view | 1 | 1 | 1 | 1 | Can they view the studies in the account, group, location |
| study_edit | 1 | 0 | 1 | 0 | Can they edit the PHI of the study |
| ↳ study_edit_approved | 1 | 1 | 1 | 0 | Can they edit the PHI of an approved study |
| ↳ study_edit_unapproved | 1 | 1 | 1 | 0 | Can they edit the PHI of an unapproved study |
| study_star | 1 | 1 | 0 | 0 | Can they star studies |
| study_tag | 1 | 1 | 0 | 0 | Can they tag studies |
| study_upload | 1 | 0 | 0 | 0 | Can they upload a study to the account, group, location |
| study_upload_validate | 0 | 0 | 0 | 0 | An upload requires session validation |
| study_report_detail | 1 | 0 | 1 | 0 | Can they get the detail report for studies in the account, group, location |
| study_download | 1 | 0 | 1 | 0 | Can they download the study |
| study_download_viewer | 1 | 0 | 1 | 0 | Can they download the local study viewer |
| study_download_iso | 1 | 0 | 1 | 0 | Can they download the study ISO |
| study_browse | 1 | 1 | 1 | 1 | Can they view studies in the web viewer |
| study_push | 1 | 0 | 0 | 0 | Can they push the study to a destination |
| study_share | 1 | 0 | 1 | 0 | Can they share the study |
| ↳ study_share_email | 0 | 0 | 1 | 0 | Can they share the study via email |
| ↳ study_share_share_code | 1 | 1 | 1 | 0 | Can they share the study via a share code |
| ↳ study_share_account | 1 | 1 | 1 | 0 | Can they share the study with accounts |
| ↳ study_share_location | 1 | 1 | 1 | 0 | Can they share the study with locations |
| ↳ study_share_group | 1 | 1 | 1 | 0 | Can they share the study with groups |
| ↳ study_share_user | 1 | 1 | 1 | 0 | Can they share the study with users |
| ↳ study_share_rsna | 0 | 0 | 0 | 0 | Can they share the study with the RSNA network |
| study_delete | 0 | 0 | 1 | 0 | Can they delete a study |
| study_delete_image | 0 | 0 | 0 | 0 | Can they delete images and series within a study |
| study_thin | 0 | 0 | 0 | 0 | Can they create a thin study |
| study_report_view | 1 | 1 | 1 | 1 | Can they view attached reports for a study |
| study_report_view_approved | 1 | 1 | 1 | 1 | Can they view attached reports for an approved study |
| study_report_view_unapproved | 0 | 0 | 0 | 0 | Can they view attached reports for an unapproved study |
| study_report_hl7_view | 1 | 1 | 1 | 1 | Can they view HL7 reports for a study |
| study_report_hl7_view_approved | 1 | 1 | 1 | 1 | Can they view HL7 reports for an approved study |
| study_report_hl7_view_unapproved | 0 | 0 | 0 | 0 | Can they view HL7 reports for an unapproved study |
| study_report_upload | 1 | 0 | 1 | 0 | Can they upload a report to a study |
| study_report_upload_approved | 1 | 1 | 1 | 0 | Can they upload a report to an approved study |
| study_report_upload_unapproved | 0 | 0 | 0 | 0 | Can they upload a report to an unapproved study |
| study_report_delete | 1 | 0 | 1 | 0 | Can they delete a report from a study |
| study_report_delete_approved | 1 | 1 | 1 | 0 | Can they delete a report from an approved study |
| study_report_delete_unapproved | 0 | 0 | 0 | 0 | Can they delete a report from an unapproved study |
| study_sync | 0 | 0 | 0 | 0 | Can they force a study to sync against storage and re-run routing rules |
| study_status_view | 0 | 0 | 0 | 0 | Can they view the status of the study |
| study_status_edit | 0 | 0 | 0 | 0 | Can they edit the status of the study |
| study_comment_view | 0 | 0 | 0 | 0 | Can they view the comments for the study |
| study_comment_edit | 0 | 0 | 0 | 0 | Can they edit comments for the study |
| study_audio_record | 0 | 0 | 0 | 0 | Can they record an audio report for the study |
| study_audio_play | 0 | 0 | 0 | 0 | Can they playback audio reports for the study |
| study_move | 0 | 0 | 0 | 0 | Can they move the study to another PHI namespace |
| study_duplicate | 0 | 0 | 0 | 0 | Can they duplicate studies to another namespace |
| study_manual_route | 0 | 0 | 0 | 0 | Can they manually route a study |
|
study_field_patient_name study_field_patientid study_field_study_description study_field_accession_number study_field_modality study_field_referring_physician study_field_patient_sex study_field_study_date study_field_patient_birth_date study_field_customfield_UUID |
F | F | F | F | Permission for study fields. Customfields contain the UUID of the customfield. Valid values are.
|
| audit_view | 1 | 0 | 1 | 0 | Can they view audit information |
| analytics_view | 1 | 0 | 1 | 0 | Can they view analytics information |
| study_search_require_patient_name | 0 | 0 | 0 | 0 | Patient name is required for a study search |
| study_search_require_patient_sex | 0 | 0 | 0 | 0 | Patient gender is required for a study search |
| study_search_require_accession_number | 0 | 0 | 0 | 0 | Accession number is required for a study search |
| study_search_require_patient_birth_date | 0 | 0 | 0 | 0 | Patient birth date is required for a study search |
| study_search_require_patientid | 0 | 0 | 0 | 0 | MRN is required for a study search |
| filter_share | 1 | 0 | 1 | 0 | Can they share filters |
| customfield_view | 1 | 0 | 0 | 0 | Can they view or list the customfields in the account |
| customfield_edit | 1 | 0 | 0 | 0 | Can they add, edit and remove customfields from an account |
| case_view | 0 | 0 | 0 | 0 | Can they view or list the cases in the account |
| case_edit | 0 | 0 | 0 | 0 | Can they add, edit and remove cases from an account |
| patient_view | 0 | 0 | 0 | 0 | Can they view or list the patients in the account |
| patient_edit | 0 | 0 | 0 | 0 | Can they add, edit and remove patients from an account |
| order_view | 0 | 0 | 0 | 0 | Can they view or list the orders in the account |
| order_edit | 0 | 0 | 0 | 0 | Can they add, edit and remove orders from an account |
| webhook_view | 0 | 0 | 0 | 0 | Can they view or list the webhooks in the account |
| webhook_edit | 0 | 0 | 0 | 0 | Can they add, edit and remove webhooks from an account |
| can_proxy_login | 0 | 0 | 0 | 0 | Can they proxy login for "owned" users in an account |
| radreport_view | 0 | 0 | 0 | 0 | Can they view or list the radreports in the account |
| radreport_edit | 0 | 0 | 0 | 0 | Can they add, edit and remove radreports from an account |
| radreport_html_format | 0 | 0 | 0 | 0 | Can they use HTML formating in radreports |
| dictionary_view | 0 | 0 | 0 | 0 | Can they view or list the dictionaries in the account |
| dictionary_edit | 0 | 0 | 0 | 0 | Can they add, edit and remove dictionaries from an account |
| hl7_template_view | 0 | 0 | 0 | 0 | Can they view or list the HL7 templates in the account |
| hl7_template_edit | 0 | 0 | 0 | 0 | Can they add, edit and remove HL7 templates from an account |
| hl7_transform_view | 0 | 0 | 0 | 0 | Can they view or list the HL7 transformations in the account |
| hl7_transform_edit | 0 | 0 | 0 | 0 | Can they add, edit and remove HL7 transformations from an account |
| annotation_view | 1 | 1 | 1 | 1 | Can they view annotations on a study |
| annotation_view_only_own | 0 | 0 | 0 | 0 | Can they view only their annotations on a study |
| annotation_edit | 1 | 1 | 1 | 0 | Can edit annotations on a study |
| meeting_view | 1 | 1 | 1 | 1 | Can they view meetings for a study |
| meeting_edit | 0 | 0 | 0 | 0 | Can create and edit meetings for a study |
| keyimage_view | 1 | 1 | 1 | 1 | Can they view key images on a study |
| keyimage_edit | 1 | 1 | 1 | 0 | Can edit key images on a study |
| validate_view | 0 | 0 | 0 | 0 | Can they view or list the validation rules in the account |
| validate_edit | 0 | 0 | 0 | 0 | Can they add, edit and remove validation rules from an account |
| purge_view | 0 | 0 | 0 | 0 | Can they view or list the purge rules in the account |
| purge_edit | 0 | 0 | 0 | 0 | Can they add, edit and remove purge rules from an account |
| link_direct | 1 | 1 | 1 | 1 | Can they view and copy the direct link to the study |
| link_view | 0 | 0 | 0 | 0 | Can they view or list the links in the account |
| link_edit | 0 | 0 | 0 | 0 | Can they add, edit and remove links from an account |
| link_edit_upload | 0 | 0 | 0 | 0 | Can they add, edit and remove study upload links from an account |
| message_view | 1 | 1 | 1 | 0 | Can they view messages in the namespace |
| message_edit | 1 | 0 | 1 | 0 | Can they send messages to the namespace |
| user_modify_sharecode | 1 | 1 | 1 | 0 | Can they modify their personal share code |
| user_modify_defaults | 1 | 1 | 1 | 0 | Can they modify their personal defaults |
| user_modify_notifications | 1 | 1 | 1 | 0 | Can they modify their notifications |
| user_request_access | 1 | 1 | 1 | 0 | Can they request access to an org |
| channel_study | 1 | 1 | 1 | 1 | Can they subscribe to a study channel |
| channel_activity | 1 | 1 | 1 | 0 | Can they subscribe to an activity channel |
| viewer_config | JSON viewer configuration for the role. Optionally pass in the UUID of a user and that users viewer configuration will be copied into the role |
Study commands
| Description | Gets the schema of a study. |
|---|---|
| URL | /study/{namespace}/{studyUid}/schema?sid={sid}&phi_namespace={phi_namespace}&extended={1,0}&attachments_only={0,1} |
| Parameters |
sid • The session id (Required). phi_namespace • A string, set to the UUID of the namespace where the file was attached if it was attached to a shared instance of the study outside of the original storage namespace extended • is an integer, when set to 1 will include the optional phi_version and transfer_attributes name/value pairs in the response. attachments_only • is an integer, when set to 1 will only include a list of the attachments in the study. |
| Returns |
Study Schema • The study schema in a JSON format representation. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to view the study. Conflict (409) • Returned if an inconsistency is found while recomputing the schema cache. Retry the request after a short delay. |
| Notes |
|
| Python Sample | + Code |
| Description | Deletes a study. |
|---|---|
| URL | /study/{namespace}/{studyUid}?sid={sid}&keep_attachments={1,0} |
| Parameters |
sid • The session id (Required). keep_attachments • An integer value of 1 or 0. |
| Returns |
HTTP CODE • 202 Accepted. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to edit the study. |
| Notes |
|
| Python Sample | + Code |
| Description | Deletes a single image from a study (to delete multiple images, use study/delete/images/). |
|---|---|
| URL | /study/{namespace}/{studyUid}/image/{imageUid}?sid={sid} |
| Parameters |
sid • The session id (Required). imageUid • The image version |
| Returns |
HTTP CODE • 202 Accepted. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have study_delete_image permission for the study. Image Not Found (404) • If image doesn't exist |
| Notes |
|
| Python Sample | + Code |
| Description | Delete multiple images from a study. |
|---|---|
| URL | /study/{namespace}/{studyUid}/images?sid={sid} |
| Parameters |
sid • The session id (Required). request body • Comma-separated list of multiple image UIDs (Required) |
| Returns |
HTTP CODE • 202 Accepted. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have study_delete_image permission for the study. Unprocessable Entity (422) • If request body is empty Study Not Found (404) • If study doesn't exist |
| Notes |
|
| Description | Gets study file count. |
|---|---|
| URL | /study/{namespace}/{studyUid}/count?sid={sid}&images_only={1,0}&attachments_only={1,0}&count_files={1,0} |
| Parameters |
sid • The session id (Required). images_only • an integer, zero or 1, returns the number of images in the study with superseded images by way of study update not counted. attachments_only • an integer, zero or 1, returns the number of attachments which have been added to this study. count_files • if present and set to 1 will count files stored on-disk for images and/or attachments, instead of counting from (possibly cached) meta data. |
| Returns |
Study count • A JSON representation of the study count for attachments and images. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to view the study. |
| Notes |
|
| Python Sample | + Code |
| Description | Gets study tags. |
|---|---|
| URL | /study/{namespace}/{studyUid}/tag?sid={sid}&phi_namespace={phi_namespace} |
| Parameters |
sid • The session id (Required). phi_namespace • A string, set to the UUID of the namespace where the file was attached if it was attached to a shared instance of the study outside of the original storage namespace |
| Returns |
Study PHI tags • A JSON representation of the study PHI tags. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to view the study. |
| Notes |
|
| Python Sample | + Code |
| Description | Gets study image attributes. |
|---|---|
| URL | /study/{namespace}/{studyUid}/image/{imageUid}/version/{imageVersion}/attribute?sid={sid}&phi_namespace={phi_namespace} |
| Parameters |
sid • The session id (Required). phi_namespace • A string, set to the UUID of the namespace where the file was attached if it was attached to a shared instance of the study outside of the original storage namespace groups • The groups parameter will allow the client to filter tags to only those in a certain set of top-level DICOM groups. Comma-separated list of decimal values, or hex values preceeded with "0x". include_tags • Comma-separated list of top-level DICOM tags to include. Format: 00080018,00080020 Nested tags (00081111:00080550) only filter at the top level, everything is included within the sequence exclude_unnamed • A string containing "1" or "0" (default 0). When "1", private tags (with "name": "?") are not included |
| Returns |
Study image attributes • A JSON representation of the image attributes. HTTP CODE • 404 (NOT FOUND) if the study does not exist. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to view the study. |
| Notes |
|
| Python Sample | + Code |
| Description | Gets study image PHI. |
|---|---|
| URL | /study/{namespace}/{studyUid}/image/{imageUid}/version/{imageVersion}/phi?sid={sid}&phi_namespace={phi_namespace} |
| Parameters |
sid • The session id (Required). phi_namespace • A string, set to the UUID of the namespace where the file was attached if it was attached to a shared instance of the study outside of the original storage namespace |
| Returns |
Study image PHI data • A JSON representation of the image PHI data. HTTP CODE • 404 (NOT FOUND) if the study does not exist. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to view the study. |
| Notes |
|
| Python Sample | + Code |
| Description | Gets study PHI data. |
|---|---|
| URL | /study/{namespace}/{studyUid}/phi?sid={sid}&phi_namespace={phi_namespace} |
| Parameters |
sid • The session id (Required). phi_namespace • A string, set to the UUID of the namespace where the file was attached if it was attached to a shared instance of the study outside of the original storage namespace |
| Returns |
Study PHI data • A JSON representation of the study PHI data. HTTP CODE • 404 (NOT FOUND) if the study does not exist. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to view the study. |
| Notes |
|
| Python Sample | + Code |
| Description | Gets study image thumbnail. |
|---|---|
| URL | /study/{namespace}/{studyUid}/image/{imageUid}/version/{imageVersion}/frame/{frameNumber}/thumbnail?sid={sid}&depth={8,16}&phi_namespace={phi_namespace} |
| Parameters |
sid • The session id (Required). phi_namespace • A string, set to the UUID of the namespace where the file was attached if it was attached to a shared instance of the study outside of the original storage namespace depth • Set the bit depth of the JPEG output (8 or 16). |
| Returns |
Study image thumbnail • A JPEG stream. HTTP CODE • 404 (NOT FOUND) if the study does not exist. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to view the study. |
| Notes |
|
| Python Sample | + Code |
| Description | Gets study diagnostic image. |
|---|---|
| URL | /study/{namespace}/{studyUid}/image/{imageUid}/version/{imageVersion}/frame/{frameNumber}/diagnostic?sid={sid}&phi_namespace={phi_namespace}&depth={8,16}&size=[max-edge-length|{width}x{height}] |
| Parameters |
sid • The session id (Required). phi_namespace • A string, set to the UUID of the namespace where the file was attached if it was attached to a shared instance of the study outside of the original storage namespace depth • Set the bit depth of the JPEG output (8 or 16). size • Specify size of output. Omitted or 0 indicates no change; one number sets the maximum edge length in pixels; wxh sets maximum width and height |
| Returns |
Study image • Gets the selected DICOM frame as a 16-bit diagnostic PNG image formatted for the browser. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to view the study. |
| Notes |
|
| Python Sample | + Code |
| Description | Gets study image frame. |
|---|---|
| URL | /study/{namespace}/{studyUid}/image/{imageUid}/version/{imageVersion}/frame/{frameNumber:[0-9][0-9]*\..*|[0-9][0-9]*}?sid={sid}&phi_namespace={phi_namespace}&depth={8,16}&quality={0.0-1.0}&size=[max-edge-length|{width}x{height}] |
| Parameters |
sid • The session id (Required). phi_namespace • A string, set to the UUID of the namespace where the file was attached if it was attached to a shared instance of the study outside of the original storage namespace depth • Set the bit depth of the JPEG output (8 or 16). quality • Set the JPEG compression quality 0 < q ≤ 1.0 (default 0.9) size • Specify size of output. Omitted or 0 indicates no change; one number sets the maximum edge length in pixels; wxh sets maximum width and height |
| Returns |
Study image frame • Gets the selected DICOM frame as a JPEG image. The response body is the actual JPEG byte stream. HTTP CODE • 404 (NOT FOUND) if the study does not exist. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to view the study. |
| Notes |
|
| Python Sample | + Code |
| Description | Gets study image frame as a TIFF. |
|---|---|
| URL | /study/{namespace}/{studyUid}/image/{imageUid}/version/{imageVersion}/frame/{frameNumber:[0-9]*}/tiff?sid={sid}&phi_namespace={phi_namespace}&depth={8,16}&size=[max-edge-length|{width}x{height}] |
| Parameters |
sid • The session id (Required). phi_namespace • A string, set to the UUID of the namespace where the file was attached if it was attached to a shared instance of the study outside of the original storage namespace depth • Set the bit depth of the TIFF output (8 or 16). size • Specify size of output. Omitted or 0 indicates no change; one number sets the maximum edge length in pixels; wxh sets maximum width and height |
| Returns |
Study image frame • Gets the selected DICOM frame as a TIFF image. The response body is the actual TIFF byte stream. HTTP CODE • 404 (NOT FOUND) if the study does not exist. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to view the study. |
| Notes |
|
| Description | Gets a study encapsulated pdf file. |
|---|---|
| URL | /study/{namespace}/{studyUid}/image/{imageUid}/version/{imageVersion}/pdf?sid={sid} |
| Parameters |
sid • The session id (Required). |
| Returns |
Study encapsulated pdf • Gets the encapsulated PDF from a DICOM file. HTTP CODE • 415 (Unsupported Media Type) if there is not an encapsulated pdf file. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to view the study. |
| Notes |
|
| Python Sample | + Code |
| Description | Gets all DICOM attributes for an individual image |
|---|---|
| URL | /study/{namespace}/{studyUid}/image/{imageUid}/version/{imageVersion}/json?sid={sid}&phi_namespace={phi_namespace} |
| Parameters |
sid • The session id (Required). phi_namespace • A string, set to the UUID of the namespace where the file was attached if it was attached to a shared instance of the study outside of the original storage namespace exclude_unnamed • A string containing "1" or "0" (default 0). When "1", private tags (with "name": "?") are not included all_dicom_values • A string containing "1" or "0" (default 0). When "1", all values from a multi-value DICOM tag will be returned, separated by "\". Otherwise, only the first value is returned |
| Returns |
Study image attributes • Gets all DICOM attributes as a JSON object. HTTP CODE • 404 (NOT FOUND) if there image/frame does not exist. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to view the study. |
| Notes |
|
| Python Sample | + Code |
| Description | Gets DICOM attributes for all images in a study. |
|---|---|
| URL | /study/{namespace}/{studyUid}/json?sid={sid}&phi_namespace={phi_namespace}&groups={group ids}&include_tags={tags} |
| Parameters |
sid • The session id (Required). phi_namespace • A string, set to the UUID of the namespace where the file was attached if it was attached to a shared instance of the study outside of the original storage namespace groups • The groups parameter will allow the client to filter tags to only those in a certain set of top-level DICOM groups. Comma-separated list of decimal values, or hex values preceeded with "0x". include_tags • Comma-separated list of top-level DICOM tags to include. Format: 00080018,00080020 Nested tags (00081111:00080550) only filter at the top level, everything is included within the sequence exclude_unnamed • A string containing "1" or "0" (default 0). When "1", private tags (with "name": "?") are not included all_dicom_values • A string containing "1" or "0" (default 0). When "1", all values from a multi-value DICOM tag will be returned, separated by "\". Otherwise, only the first value is returned series_uid • A string containing a Series Instance UID. If specified, the results will only include DICOM tags from images from the specified series |
| Returns |
Study attributes • Gets all DICOM attributes for all images in a study as a JSON array of objects. HTTP CODE • 404 (NOT FOUND) if there image/frame does not exist. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to view the study. |
| Notes |
|
| Python Sample | + Code |
| Description | Gets the selected attachment. |
|---|---|
| URL | /study/{namespace}/{studyUid}/attachment/{attachmentId}/version/{version}?sid={sid}&phi_namespace={phi_namespace} |
| Parameters |
sid • The session id (Required). phi_namespace • A string, set to the UUID of the namespace where the file was attached if it was attached to a shared instance of the study outside of the original storage namespace |
| Returns |
Study attachment • Gets the attachment as a byte stream. HTTP CODE • 404 (NOT FOUND) if there image/frame does not exist. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to view the study. |
| Notes |
|
| Python Sample | + Code |
| Description | Gets the latest attachment for a study. |
|---|---|
| URL | /study/{namespace}/{studyUid}/attachment/{filename:latest\..*|latest}?sid={sid}&phi_namespace={phi_namespace} |
| Parameters |
sid • The session id (Required). phi_namespace • A string, set to the UUID of the namespace where the file was attached if it was attached to a shared instance of the study outside of the original storage namespace |
| Returns |
Study latest attachment • Gets the latest attachment as a byte stream. HTTP CODE • 404 (NOT FOUND) if there image/frame does not exist. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to view the study. |
| Notes |
|
| Python Sample | + Code |
| Description | Posts an attachment to a study. |
|---|---|
| URL | /study/{namespace}/{studyUid}/attachment?sid={sid}&phi_namespace={phi_namespace}&wrap_images={0,1}&return_html={0,1}&synchronous_wrap={0,1}&static_ids={0,1} |
| Parameters |
sid • The session id (Required). phi_namespace • A string, set to the UUID of the namespace where the file was attached if it was attached to a shared instance of the study outside of the original storage namespace wrap_images • An integer of value 1 or 0. If 1, for attachments that are images, or can be rendered to an image, generate a new DICOM image in the study containing (a rendered image of) the attachment (also controlled by namespace setting auto_wrap_images) wrap_html_as_pdf • An integer of value 1 or 0. If 1, for attachments that are html, generate a new pdf and attach that (instead of the original html) synchronous_wrap • An integer of value 1 or 0. If 1, do all processing for image wrapping before returning, including Services notifications. Additionally triggers wrap_images functionality static_ids • An integer of value 1 or 0. If 1, the attachment, series and any images rendered from PDF are assigned (u)uids based on a hash of the attachment, which will be the same if the attachment is re-uploaded. The attachment is also allowed to be re-uploaded when set to 1. return_html • An integer of value 1 or 0. Return results as Content Type text/html, instead of application/json (required for certain browsers) data • the request entity must contain a single multipart/form-data element named data containing the content to be attached. |
| Returns |
Study attachment attributes • A JSON representation of the attachment's attributes. HTTP CODE • 202 (ACCEPTED) if there image/frame does not exist. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to upload a report to the study. |
| Notes |
|
| Python Sample | + Code |
| Description | Adds a render of an attachment to a study. |
|---|---|
| URL | /study/{namespace}/{studyUid}/attachment/{attachmentUid}/version/{version}/image?sid={sid}& |
| Parameters |
sid • The session id (Required). static_ids • An integer of value 1 or 0. If 1, series and images rendered from PDF are assigned (u)uids based on a hash of the attachment; repeated requests to render the same PDF will not result in more images. phi_namespace • A string, set to the UUID of the namespace where the file was attached if it was attached to a shared instance of the study outside of the original storage namespace |
| Returns |
HTTP CODE • 202 Attachment succesfully rendered as an image and added to study. HTTP CODE • 500 (SERVER ERROR) if server error persisted. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to upload a report to the study. |
| Notes |
|
| Description | Downloads a study ZIP file. |
|---|---|
| URL | /study/{namespace}/{studyUid}/download?sid={sid}&phi_namespace={phi_namespace}&bundle={iso,dicom,osx,win}&include_wrapped_dicoms={0,1}&series_uid={series_uid[,series_uid...]}&image_uid={image_uid[,image_uid...]} |
| Parameters |
sid • The session id (Required). phi_namespace • The shared-to namespace UUID of a shared instance of a study (Optional) bundle • A string with value "dicom", "image", "iso", "osx" or "win" (Required). include_wrapped_dicoms • When "1", will also include the DICOM file of a wrapped DICOM. Default is to only include the unwrapped file. series_uid • One or more Series Instance UIDs, comma-separated. Download will only include images from these series. image_uid • One or more SOP Instance UIDs, comma-separated. Download will only include these images. stop_on_failure • If "1", will not include the viewer app if there are any errors generating the download. exclude_viewer • If "1", viewer app will not be included in the "iso", "osx", and "win" bundle. The viewer app can be retrieved separately via /download/viewer v3 • If "1", viewer app will be pro viewer, and format/content will support pro viewer. roche_directory • If "1", .dcm files will be organized into StudyDate-ClinicalTrialTimePointID/Modality/SeriesTime-SeriesDescription/ folders (instead of SER000X/ folders). flat_directory • If "1", .dcm files will be flatly named IMG0001-IMG{image count}, and not be organized into SER folder. anonymize_tags • The list of tag ids with overridden values separated by comma (,) that should be overridden. Example: anonymize_tags={{tag_id_int_1}}={{tag_value_1}},{{tag_id_int_2}}={{tag_value_2}} . To omit tag, provide special keyword that is being used in services overrides as value: __DELETE__ video_format • Format to encode video. Either "avi" or "mp4". "avi" by default. video_series_uids • One or more Series Instance UIDs, comma-separated. For bundles that include video, download will include a transcoded video for each of these series. batch_encode_cine • Batch encode cine for video. |
| Returns |
Study ZIP file • Downloads a study as a ZIP file. HTTP CODE • 403 (NOT FOUND) if there image/frame does not exist. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to download a study bundle specified by the namespace and studyUid. |
| Notes |
|
| Python Sample | + Code |
| Description | Deletes a study attachment. |
|---|---|
| URL | /study/{namespace}/{studyUid}/attachment/{attachmentId}/version/{hash}?sid={sid}?phi_namespace={phi_namespace} |
| Parameters |
sid • The session id (Required). phi_namespace • A string, set to the UUID of the namespace where the file was attached if it was attached to a shared instance of the study outside of the original storage namespace |
| Returns |
HTTP CODE • 202 (ACCEPTED) if the attachment was deleted without errors. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to delete a report from a study specified by the namespace and studyUid. |
| Notes |
|
| Python Sample | + Code |
| Description | Gets a study encapsulated video. |
|---|---|
| URL | /study/{namespace}/{studyUid}/image/{imageUid}/version/{imageVersion}/video?sid={sid}&reencode_video={0,1} |
| Parameters |
sid • The session id (Required). reencode_video • An integer of value 1 or 0. |
| Returns |
Study encapsulated video • A stream of the video in an MPEG-4 format. HTTP CODE • 415 (Unsupported Media Type) if a video was not found encapsulated in the DICOM file. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to delete a report from a study specified by the namespace and studyUid. |
| Notes |
|
| Python Sample | + Code |
| Description | Split a study. |
|---|---|
| URL | /study/{namespace}/{studyUid}/split?sid={sid}&phi_namespace={namespace}&to_namespace={namespace}&series_uid={series_uid,series_uid...series_uid}&delete_series_from_original={0,1} |
| Parameters |
sid • The session id (Required). phi_namespace • An optional namespace UUID to burn-in PHI overrides to split study (defaults to no overrides) to_namespace • An optional namespace UUID to create the split study (defaults to current namespace) series_uid • An optional series instance uids list delimited by comas, only specified series will be split (defaults to split all image instances) delete_series_from_original • An integer value of either 0 or 1. If 1 the series specified in the series_uid list will be deleted from the original study |
| Returns |
Study UID • The new study UID. HTTP CODE • 401 (Unauthorized) if the user does not contain the proper permissions. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to split a study. Study Not Found • If the study to be split cannot be located. |
| Notes |
|
| Python Sample | + Code |
| Description | Merge studies. |
|---|---|
| URL | /study/{namespace}/{studyUid}/merge?sid={sid}&secondary_study_uid={secondary_study_uid}&delete_secondary_study={0,1} |
| Parameters |
sid • The session id (Required). secondary_study_uid • A list of one or more comma-separated secondary Study UIDs to be merged into the studyUid(Required). delete_secondary_study • An integer, when set to 1 the process will check that the sid provided has the required permission to delete the secondary study. series_uids • A list of one or more comma-separated Series Instance UIDs, used to filter images merged from secondary study. |
| Returns |
HTTP CODE • 401 (Unauthorized) if the user does not contain the proper permissions. HTTP CODE • 202 (Accepted) if the request was accepted. HTTP CODE • 500 (Internal Server Error) if the SID provided does not have the proper permission to delete the secondary study if the optional parameter delete_secondary_study is set to 1. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to merge the two studies. |
| Notes |
|
| Python Sample | + Code |
| Description | Produce a new study that is a copy of the old, with specified pixel regions obscured. |
|---|---|
| URL | /study/{namespace}/{studyUid}/anonymize |
| Parameters |
sid • The session id (Required). to_namespace • The storage namespace into which the new study should be placed (default: same as original). new_study_uid * The Study Instance UID of the new study (default: randomly generated). keep_image_uids * Should SOP Instance UIDs of modified copies be same as originals? (default: false) color * HTML-formatted color (#rrggbb) of obscured regions (default: black-and-white checkerboard) |
| Returns |
HTTP CODE • 401 (Unauthorized) if the user does not contain the proper permissions. HTTP CODE • 202 (Accepted) if the request was accepted. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to read or write the original or new study. |
| Notes |
|
| Description | Produce a new study that is a copy of the old, cropped to specified pixel region. |
|---|---|
| URL | /study/{namespace}/{studyUid}/crop |
| Parameters |
sid • The session id (Required). to_namespace • The storage namespace into which the new study should be placed (default: same as original). new_study_uid * The Study Instance UID of the new study (default: randomly generated). keep_image_uids * Should SOP Instance UIDs of modified copies be same as originals? 1/0 (default: 0/false) |
| Returns |
HTTP CODE • 412 (Precondition failed) if phi_namespace or to_namespace is not provided. HTTP CODE • 401 (Unauthorized) if the user does not contain the proper permissions. HTTP CODE • 202 (Accepted) if the request was accepted. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to read or write the original or new study. |
| Notes |
|
| Description | Clears the image and metadata cache for the indicated study. |
|---|---|
| URL | /study/{namespace}/{studyUid}/cache |
| Parameters |
sid • The session id (Required). |
| Returns |
HTTP CODE • 202 (ACCEPTED) HTTP CODE • 404 (NOT FOUND) if the study does not exist. |
| Errors |
Permission Denied • If the sid is not valid. |
| Notes |
|
| Python Sample | + Code |
Image commands
| Description | Upload image to a namespace. |
|---|---|
| URL | /namespace/{namespace}/image?sid={sid} |
| Parameters |
sid • The session id (Required). |
| Returns |
Image attributes • A JSON representation of the image's attributes. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to upload an image from a study specified by the namespace. |
| Notes |
|
| Python Sample | + Code |
| Description | Upload a non DICOM image. |
|---|---|
| URL | /namespace/{namespace}/wrap?sid={sid}&render_wrapped_pdf={0,1} |
| Parameters |
sid • The session id (Required). tags • Any DICOM tags to be overwrite or added should be provided as a form-data field. file • The multipart file to be uploaded should be provided as a form-data field. render_wrapped_pdf • An integer value of either 0 or 1. |
| Headers |
X-File-Size • The size (bytes) of the file to be DICOM-wrapped (required). |
| Returns |
Image attributes • A JSON representation of the image's attributes. |
| Errors |
Permission Denied (403) • If the sid is not valid or the user does not have permission to upload a non DICOM file from a study specified by the namespace. Precondition Failed (412) • Returned if X-File-Size header is not provided or has an invalid value. Request Entity Too Large (413) • Returned if the file to be DICOM-wrapped is larger than 2GiB (2^31 - 1 bytes). |
| Notes |
|
| Python Sample | + Code |
| Description | Gets graphical annotations according to vendor definitions for CAD SR object. |
|---|---|
| URL | /study/{namespace}/{studyUid}/image/{imageUid}/version/{imageVersion}/cadsr?sid={sid} |
| Parameters |
sid • The session id (Required). phi_namespace • A string, set to the UUID of the namespace where the file was attached if it was attached to a shared instance of the study outside of the original storage namespace |
| Returns |
Graphical annotations • A JSON array representation of the vendor-specified graphical annotations, empty if not implemented for the vendor or generating device. HTTP CODE • 404 (NOT FOUND) if the study does not exist. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to view the study. |
| Notes |
|
| Python Sample | + Code |
| Description | Gets the HL7 report from services, converts to the DICOM SR and uploads to the storage. |
|---|---|
| URL | /study/{namespace}/{studyUid}/hl7/{hl7Uuid}/sr?sid={sid}&phi_namespace={phi_namespace} |
| Parameters |
sid • The session id (Required). phi_namespace • A string, set to the UUID of the namespace where the file was attached if it was attached to a shared instance of the study outside of the original storage namespace hl7Uuid • hl7 report UUID from services to convert to DICOM SR. |
| Returns |
HTTP CODE • 202 Accecpted for the upload to storage. HTTP CODE • 500 (SERVER ERROR) if hl7 report data not converted to DICOM. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to view the study. |
| Notes |
|
| Description | Clones the specified study into new study with new study uid, and generates new series uid and image uids if it's requested. |
|---|---|
| URL | /study/{namespace}/{studyUid}/clone?sid={sid}&phi_namespace={phi_namespace}&new_image_uids={true/false}&new_series_uids={true/false} |
| Parameters |
sid • The session id (Required). new_image_uids • Values: true/false, whether to generate for study new image uids. new_series_uids • Values: true/false, whether to generate for study new series uids. phi_namespace • A string, set to the UUID of the namespace where the file was attached if it was attached to a shared instance of the study outside of the original storage namespace |
| Returns |
HTTP CODE • 202 Accepted task for cloning the study. HTTP CODE • 500 (SERVER ERROR) if server error persisted. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to view the study. |
| Notes |
|
| Description | Generates RTSTRUCT DICOM file from the content sent by client |
|---|---|
| URL | /study/{namespace}/{studyUid}/rt?sid={sid}&phi_namespace={phi_namespace} |
| Parameters |
sid • The session id (Required). phi_namespace • A string, set to the UUID of the namespace where the file was attached if it was attached to a shared instance of the study outside of the original storage namespace body • Body that represents fields of the RTSTRUCT DICOM, the example of json example • { "structureSetLabel": "1", "structureSetName": "1", "structureSetDescription": "1", "instanceNumber": "1", "structureSetDate":<PHONE_NUMBER>319, "structureSetTime":<PHONE_NUMBER>319, "referencedFrameOfReferenceList": [ { "frameOfReferenceUID": "1", "rtReferencedStudies": [ { "referencedSOPClassUID": "1", "referencedSOPInstanceUID": "1", "rtReferencedSeries": [ { "seriesInstanceUID": "series", "contourImageSequences": [ { "referencedFrameNumber": "10", "referencedSegmentNumber": "3" } ] } ] } ] } ], "structureSetROISequences": [ { "roiNumber": "1", "referencedFrameOfReferenceUID": "1", "roiName": "1", "roiDescription": "1", "roiVolume": "1", "roiGenerationAlgorithm": "MANUAL", "roiGenerationDescription": "1", "derivationCodeSequences": [ { "codeValue": "1", "codingSchemeDesignator": "1", "codingSchemeVersion": "1", "codeMeaning": "1" } ] } ], "predecessorStructureSet": [ { "referencedSOPClassUID": "sop class uid", "referencedSOPInstanceUID": "instance uid" } ], "roiContours": [ { "referencedROINumber": "12", "roiDisplayColor": "333", "contourSequences": [ { "contourNumber": "3", "attachedContours": "3", "contourGeometricType": "OPEN_PLANAR", "contourSlabThickness": "3", "contourOffsetVector": "3", "numberOfContourPoints": "3", "contourImageSequence": [ { "referencedFrameNumber": "21", "referencedSegmentNumber": "18" } ], "contourData": [ { "x": 5.6, "y": 123.9, "z": 43.2 } ] } ] } ], "rtROIObservations": [ { "observationNumber": "11", "referencedROINumber": "11", "roiObservationLabel": "11", "roiObservationDescription": "11", "rtROIInterpretedType": "EXTERNAL", "roiInterpreter": "11", "materialId": "11", "relatedROISequences": [ { "referencedROINumber": "22", "rtROIRelationship": "22" } ], "codeSequenceMacroAttributes": [ { "codeValue": "88", "codingSchemeDesignator": "88", "codingSchemeVersion": "88", "codeMeaning": "88" } ], "relatedRtRoiObservationsSequence": [ "33" ], "physicalProperties": [ { "roiPhysicalProperty": "EFFECTIVE_Z", "roiElementalCompositeSequences": [ { "roiAtomicNumber": "5", "roiAtomicMassFraction": "5", "physicalPropertyValue": "5" } ] } ] } ] } |
| Returns |
Image attributes • A JSON representation of the image's attributes. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to upload the study. |
| Notes |
|
| Description | Returns JSON representation of a single DICOM as defined by the DICOMWeb WADO-RS Metadata standard |
|---|---|
| URL | dicomweb/{namespace}/studies/{studyUid}/series/{seriesUid}/instances/{imageUid}/metadata?sid={sid}&phi_namespace={phi_namespace} |
| Parameters |
sid • The session id of a user who has rights to view the associated studyUid (Required). phi_namespace • A string, set to the UUID of the namespace where the file was attached if it was attached to a shared instance of the study outside of the original storage namespace body • Empty |
| Returns |
DICOM tags • A JSON representation of a DICOM according to the DICOMWeb standard, omitting any bulkdata, pixeldata, or other binary fields. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to view the associated study. |
| Notes |
|
| Description | Returns JSON representation of a series of DICOM(s) as defined by the DICOMWeb WADO-RS Metadata standard |
|---|---|
| URL | dicomweb/{namespace}/studies/{studyUid}/series/{seriesUid}/instances/{imageUid}/metadata?sid={sid}&phi_namespace={phi_namespace} |
| Parameters |
sid • The session id of a user who has rights to view the associated studyUid (Required). phi_namespace • A string, set to the UUID of the namespace where the file was attached if it was attached to a shared instance of the study outside of the original storage namespace body • Empty |
| Returns |
DICOM tags • A JSON representation of a series of DICOM(s) according to the DICOMWeb standard, omitting any bulkdata, pixeldata, or other binary fields. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to view the associated study. |
| Notes |
|
| Description | Returns JSON representation of an entire study of DICOMs as defined by the DICOMWeb WADO-RS Metadata standard |
|---|---|
| URL | dicomweb/{namespace}/studies/{studyUid}/metadata?sid={sid}&phi_namespace={phi_namespace} |
| Parameters |
sid • The session id of a user who has rights to view the associated studyUid (Required). phi_namespace • A string, set to the UUID of the namespace where the file was attached if it was attached to a shared instance of the study outside of the original storage namespace body • Empty |
| Returns |
DICOM tags • A JSON representation of an entire study of DICOM(s) according to the DICOMWeb standard, omitting any bulkdata, pixeldata, or other binary fields. |
| Errors |
Permission Denied • If the sid is not valid or the user does not have permission to view the associated study. |
| Notes |
|