`); let searchUrl = `/search/`; history.forEach((elem) => { prevsearch.find('#prevsearch-options').append(`
${elem} `); }); } $('#search-pretype-options').empty(); $('#search-pretype-options').append(prevsearch); let prevbooks = $(false); [ {title:"Recently Opened Textbooks", books:previous_books}, {title:"Recommended Textbooks", books:recommended_books} ].forEach((book_segment) => { if (Array.isArray(book_segment.books) && book_segment.books.length>0 && nsegments<2) { nsegments+=1; prevbooks = $(`
${book_segment.title} `); let searchUrl = "/books/xxx/"; book_segment.books.forEach((elem) => { prevbooks.find('#prevbooks-options'+nsegments.toString()).append(`
${elem.title} ${ordinal(elem.edition)} ${elem.author} `); }); } $('#search-pretype-options').append(prevbooks); }); } function anon_pretype() { let prebooks = null; try { prebooks = JSON.parse(localStorage.getItem('PRETYPE_BOOKS_ANON')); }catch(e) {} if ('previous_books' in prebooks && 'recommended_books' in prebooks) { previous_books = prebooks.previous_books; recommended_books = prebooks.recommended_books; if (typeof PREVBOOKS !== 'undefined' && Array.isArray(PREVBOOKS)) { new_prevbooks = PREVBOOKS; previous_books.forEach(elem => { for (let i = 0; i < new_prevbooks.length; i++) { if (elem.id == new_prevbooks[i].id) { return; } } new_prevbooks.push(elem); }); new_prevbooks = new_prevbooks.slice(0,3); previous_books = new_prevbooks; } if (typeof RECBOOKS !== 'undefined' && Array.isArray(RECBOOKS)) { new_recbooks = RECBOOKS; for (let j = 0; j < new_recbooks.length; j++) { new_recbooks[j].viewed_at = new Date(); } let insert = true; for (let i=0; i < recommended_books.length; i++){ for (let j = 0; j < new_recbooks.length; j++) { if (recommended_books[i].id == new_recbooks[j].id) { insert = false; } } if (insert){ new_recbooks.push(recommended_books[i]); } } new_recbooks.sort((a,b)=>{ adate = new Date(2000, 0, 1); bdate = new Date(2000, 0, 1); if ('viewed_at' in a) {adate = new Date(a.viewed_at);} if ('viewed_at' in b) {bdate = new Date(b.viewed_at);} // 100000000: instead of just erasing the suggestions from previous week, // we just move them to the back of the queue acurweek = ((new Date()).getDate()-adate.getDate()>7)?0:100000000; bcurweek = ((new Date()).getDate()-bdate.getDate()>7)?0:100000000; aviews = 0; bviews = 0; if ('views' in a) {aviews = acurweek+a.views;} if ('views' in b) {bviews = bcurweek+b.views;} return bviews - aviews; }); new_recbooks = new_recbooks.slice(0,3); recommended_books = new_recbooks; } localStorage.setItem('PRETYPE_BOOKS_ANON', JSON.stringify({ previous_books: previous_books, recommended_books: recommended_books })); build_popup(); } } var whiletyping_search_object = null; var whiletyping_search = { books: [], curriculum: [], topics: [] } var single_whiletyping_ajax_promise = null; var whiletyping_database_initial_burst = 0; //number of consecutive calls, after 3 we start the 1 per 5 min calls function get_whiletyping_database() { //gets the database from the server. // 1. by validating against a local database value we confirm that the framework is working and // reduce the ammount of continuous calls produced by errors to 1 per 5 minutes. return localforage.getItem('whiletyping_last_attempt').then(function(value) { if ( value==null || (new Date()) - (new Date(value)) > 1000*60*5 || (whiletyping_database_initial_burst < 3) ) { localforage.setItem('whiletyping_last_attempt', (new Date()).getTime()); // 2. Make an ajax call to the server and get the search database. let databaseUrl = `/search/whiletype_database/`; let resp = single_whiletyping_ajax_promise; if (resp === null) { whiletyping_database_initial_burst = whiletyping_database_initial_burst + 1; single_whiletyping_ajax_promise = resp = new Promise((resolve, reject) => { $.ajax({ url: databaseUrl, type: 'POST', data:{csrfmiddlewaretoken: "3iP0CjTueI3dSvdLRIP07AQ8NTxneVW1gFKTeugZKDx3aqDUzB3XzrURYxQ7RcLW"}, success: function (data) { // 3. verify that the elements of the database exist and are arrays if ( ('books' in data) && ('curriculum' in data) && ('topics' in data) && Array.isArray(data.books) && Array.isArray(data.curriculum) && Array.isArray(data.topics)) { localforage.setItem('whiletyping_last_success', (new Date()).getTime()); localforage.setItem('whiletyping_database', data); resolve(data); } }, error: function (error) { console.log(error); resolve(null); }, complete: function (data) { single_whiletyping_ajax_promise = null; } }) }); } return resp; } return Promise.resolve(null); }).catch(function(err) { console.log(err); return Promise.resolve(null); }); } function get_whiletyping_search_object() { // gets the fuse objects that will be in charge of the search if (whiletyping_search_object){ return Promise.resolve(whiletyping_search_object); } database_promise = localforage.getItem('whiletyping_database').then(function(database) { return localforage.getItem('whiletyping_last_success').then(function(last_success) { if (database==null || (new Date()) - (new Date(last_success)) > 1000*60*60*24*30 || (new Date('2023-04-25T00:00:00')) - (new Date(last_success)) > 0) { // New database update return get_whiletyping_database().then(function(new_database) { if (new_database) { database = new_database; } return database; }); } else { return Promise.resolve(database); } }); }); return database_promise.then(function(database) { if (database) { const options = { isCaseSensitive: false, includeScore: true, shouldSort: true, // includeMatches: false, // findAllMatches: false, // minMatchCharLength: 1, // location: 0, threshold: 0.2, // distance: 100, // useExtendedSearch: false, ignoreLocation: true, // ignoreFieldNorm: false, // fieldNormWeight: 1, keys: [ "title" ] }; let curriculum_index={}; let topics_index={}; database.curriculum.forEach(c => curriculum_index[c.id]=c); database.topics.forEach(t => topics_index[t.id]=t); for (j=0; j
Solutions
Textbooks
`); } function build_solutions() { if (Array.isArray(solution_search_result)) { const viewAllHTML = userSubscribed ? `View All` : ''; var solutions_section = $(` Solutions ${viewAllHTML} `); let questionUrl = "/questions/xxx/"; let askUrl = "/ask/question/xxx/"; solution_search_result.forEach((elem) => { let url = ('course' in elem)?askUrl:questionUrl; let solution_type = ('course' in elem)?'ask':'question'; let subtitle = ('course' in elem)?(elem.course??""):(elem.book ?? "")+" "+(elem.chapter?"Chapter "+elem.chapter:""); solutions_section.find('#whiletyping-solutions').append(` ${elem.text} ${subtitle} `); }); $('#search-solution-options').empty(); if (Array.isArray(solution_search_result) && solution_search_result.length>0){ $('#search-solution-options').append(solutions_section); } MathJax.typesetPromise([document.getElementById('search-solution-options')]); } } function build_textbooks() { $('#search-pretype-options').empty(); $('#search-pretype-options').append($('#search-solution-options').html()); if (Array.isArray(textbook_search_result)) { var books_section = $(` Textbooks View All `); let searchUrl = "/books/xxx/"; textbook_search_result.forEach((elem) => { books_section.find('#whiletyping-books').append(` ${elem.title} ${ordinal(elem.edition)} ${elem.author} `); }); } if (Array.isArray(textbook_search_result) && textbook_search_result.length>0){ $('#search-pretype-options').append(books_section); } } function build_popup(first_time = false) { if ($('#search-text').val()=='') { build_pretype(); } else { solution_and_textbook_search(); } } var search_text_out = true; var search_popup_out = true; const is_login = false; const user_hash = null; function pretype_setup() { $('#search-text').focusin(function() { $('#search-popup').addClass('show'); resize_popup(); search_text_out = false; }); $( window ).resize(function() { resize_popup(); }); $('#search-text').focusout(() => { search_text_out = true; if (search_text_out && search_popup_out) { $('#search-popup').removeClass('show'); } }); $('#search-popup').mouseenter(() => { search_popup_out = false; }); $('#search-popup').mouseleave(() => { search_popup_out = true; if (search_text_out && search_popup_out) { $('#search-popup').removeClass('show'); } }); $('#search-text').on("keyup", delay(() => { build_popup(); }, 200)); build_popup(true); let prevbookUrl = `/search/pretype_books/`; let prebooks = null; try { prebooks = JSON.parse(localStorage.getItem('PRETYPE_BOOKS_'+(is_login?user_hash:'ANON'))); }catch(e) {} if (prebooks && 'previous_books' in prebooks && 'recommended_books' in prebooks) { if (is_login) { previous_books = prebooks.previous_books; recommended_books = prebooks.recommended_books; if (prebooks.time && new Date().getTime()-prebooks.time<1000*60*60*6) { build_popup(); return; } } else { anon_pretype(); return; } } $.ajax({ url: prevbookUrl, method: 'POST', data:{csrfmiddlewaretoken: "3iP0CjTueI3dSvdLRIP07AQ8NTxneVW1gFKTeugZKDx3aqDUzB3XzrURYxQ7RcLW"}, success: function(response){ previous_books = response.previous_books; recommended_books = response.recommended_books; if (is_login) { localStorage.setItem('PRETYPE_BOOKS_'+user_hash, JSON.stringify({ previous_books: previous_books, recommended_books: recommended_books, time: new Date().getTime() })); } build_popup(); }, error: function(response){ console.log(response); } }); } $( document ).ready(pretype_setup); $( document ).ready(function(){ $('#search-popup').on('click', '.search-view-item', function(e) { e.preventDefault(); let autoCompleteSearchViewUrl = `/search/autocomplete_search_view/`; let objectUrl = $(this).attr('href'); let selectedId = $(this).data('objid'); let searchResults = []; $("#whiletyping-solutions").find("a").each(function() { let is_selected = selectedId === $(this).data('objid'); searchResults.push({ objectId: $(this).data('objid'), contentType: $(this).data('contenttype'), category: $(this).data('category'), selected: is_selected }); }); $("#whiletyping-books").find("a").each(function() { let is_selected = selectedId === $(this).data('objid'); searchResults.push({ objectId: $(this).data('objid'), contentType: $(this).data('contenttype'), category: $(this).data('category'), selected: is_selected }); }); $.ajax({ url: autoCompleteSearchViewUrl, method: 'POST', data:{ csrfmiddlewaretoken: "3iP0CjTueI3dSvdLRIP07AQ8NTxneVW1gFKTeugZKDx3aqDUzB3XzrURYxQ7RcLW", query: $('#search-text').val(), searchObjects: JSON.stringify(searchResults) }, dataType: 'json', complete: function(data){ window.location.href = objectUrl; } }); }); });
FAQs
The sphincter of Oddi is a muscular valve responsible for controlling the flow of bile and pancreatic secretions through the ampulla of Vater into the second part of the duodenum.
Where do the common bile duct and the pancreatic duct enter the GI tract? ›
The common bile duct passes through the pancreas before it empties into the first part of the small intestine (duodenum). The lower part of the common bile duct joins the pancreatic duct to form a channel called the ampulla of Vater or it may enter the duodenum directly.
Is the pancreatic duct part of the biliary system? ›
Caption. Illustration of the biliary system, with the liver, gallbladder, duodenum, pancreatic duct, common bile duct, pancreas, cystic duct, and hepatic ducts labeled.
What does the fusion of the hepatic duct and the cystic duct form? ›
The cystic duct from the gallbladder joins the common hepatic duct to form the common bile duct. The common bile duct passes through the pancreas and ends in the small intestine.
How to tell if your pancreas is failing? ›
What are the symptoms of pancreatitis?
- Severe belly pain that may spread to your back or chest. (It may feel worse after you eat.)
- Nausea.
- Vomiting.
- Rapid heart rate.
- Fever.
- Swelling and feeling sore or tender in your upper belly.
- Fluid buildup in your belly.
- Lowered blood pressure.
How serious is gallstone pancreatitis? ›
If gallstone pancreatitis goes untreated, the complications can be very serious. Digestive fluids from the liver, gallbladder, and pancreas may back up into your body. This can cause an infection called cholangitis. You may also develop yellowish eyes and skin (jaundice).
What does it mean when CBD is not visualized? ›
Poor visualization of the distal CBD also occurs when the pancreas is markedly calcified, during an episode of acute pancreatitis or with chronic pancreatitis, when there is altered anatomy such as previous gastric surgery, or where there is air within the biliary tract from prior iatrogenic interventions.
What are the symptoms of bile duct problems? ›
Symptoms
- Abdominal pain in the upper right side.
- Dark urine.
- Fever.
- Itching.
- Jaundice (yellow skin color)
- Nausea and vomiting.
- Clay-colored or pale stools.
How to treat a dilated common bile duct? ›
Therefore, a surgical procedure should be undertaken once the cause of bile duct dilatation has been identified. The purpose of the surgical procedure is to eliminate the cause and remove the lesion to establish adequate bile drainage by surgical or endoscopic means.
Can you unblock a bile duct without surgery? ›
Treatment for bile duct obstruction aims to relieve the blockage and will depend on the underlying cause and a person's overall health. Healthcare professionals can usually remove gallstones using an endoscope during an ERCP. However, some people may still require surgery.
Can you live without a pancreas? Yes, you can, but not without side effects. Without the enzymes and hormones that your pancreas once produced, you'll have difficulties regulating your blood sugar and absorbing nutrients from your food. You'll need supplemental therapies to replace them.
What are the symptoms of lack of bile? ›
Cholestasis is reduction or stoppage of bile flow. Bile is the digestive fluid produced by the liver. Disorders of the liver, bile duct, or pancreas can cause cholestasis. The skin and whites of the eyes look yellow, the skin itches, urine is dark, and stools may become light-colored and smell foul.
What fluid is in the cystic duct? ›
About half the bile secreted between meals flows directly through the common bile duct into the small intestine. The rest of the bile is diverted through the cystic duct into the gallbladder to be stored.
How much bile is produced daily? ›
The amount of bile secreted into the duodenum is controlled by the hormones cholecystokinin, secretin, gastrin, and somatostatin and also by the vagus nerve. About 800 to 1,000 ml of bile (before concentration) are produced daily by the liver.
What does the common bile duct do? ›
Bile is made in the liver and flows through the common hepatic duct and the cystic duct to the gallbladder, where it is stored. When food is being digested, bile is released from the gallbladder and flows through the common bile duct, pancreas, and ampulla of Vater into the small intestine.
How do you fix a sphincter of ODDI dysfunction? ›
How is sphincter of Oddi dysfunction treated?
- Certain medicines. Calcium channel blockers and other medicines may ease symptoms. ...
- Sphincterotomy. For this procedure, your sphincter of Oddi muscle is cut surgically. ...
- Botulinum toxin (Botox) injection. Botox injection may be done through an endoscope to ease symptoms.
What is the sphincter of pancreatitis? ›
The sphincter of Oddi is a muscle that opens and closes to allow bile and pancreatic juice to flow into your small intestine. In sphincter of Oddi dysfunction, your sphincter muscle doesn't open when it should, which causes a backup of digestive juices and severe pain in your abdomen.
How to treat sphincter of oddi dysfunction naturally? ›
avoiding triggers, such as fatty foods, alcohol, and caffeine; eating smaller meals more frequently, and managing stress can all help to reduce the frequency and severity of SOD symptoms.