Skip to content

Instantly share code, notes, and snippets.

View jmhmd's full-sized avatar

Jason Hostetter jmhmd

View GitHub Profile
@jmhmd
jmhmd / nginx.conf
Last active March 12, 2024 16:26
Example pacsbin CORS nginx config
server {
listen 80;
server_name dicomwebproxy.hospital.org; # set to desired address of proxy server
add_header 'Access-Control-Allow-Origin' 'pacsbin.com'; # Can set to '*' instead of 'pacsbin.com' to accept any domain
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Headers' '*';
add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS';
location / {

My PACS/EHR/Dictation workflow and capability wishlist, as a neuroradiologist and general radiologist

  1. Client-side MPR by default for volumetric series
  2. Automatic linking of prior series with registration in 3D space
  3. Prefetch images, EHR data, and open a background dictation session for the next case, for instant loading
  4. Normalization of series metadata, possibly partially AI driven, to apply standard/corrected series labels
    • Improved hanging protocol reliability
    • Automatic and more reliable identification of relevant priors
    • Pre-fill relevant prior date in dictation template
@jmhmd
jmhmd / embedding.md
Created January 19, 2022 16:24
Pacsbin viewer embedding

Embed helper script

// initialize the embed client
var pbClient = new PacsbinClient();

// Prevent the parent page from scrolling when scrolling on embedded viewer
// This just watches for mouseover event on the iframe and sets the parent page style `overflow: hidden` to prevent scroll. Test to make sure this doesn't mess up something with your page layout.
pbClient.noPageScrollWheel({
  elementSelector: '.pacsbin-study', // default: 'iframe.pacsbin'
<a href="javascript:(function()%7B%24('span%3Acontains(%22Above%20Competence%22)').closest('div.viewer-scale-rating-option').find('input.ni-radio').trigger('click')%7D)()">Mark all above competence</a> <-- <b>Drag</b> this link to your bookmarks bar.
@jmhmd
jmhmd / mark-all.html
Last active January 11, 2018 13:39
Mark all questions very good on new innovations eval
<a href="javascript:(function()%7B%24('span%3Acontains(%22Very%20Good%22)').closest('div.viewer-scale-rating-option').find('input.ni-radio').trigger('click')%7D)()">Mark all very good</a> <-- <b>Drag</b> this link to your bookmarks bar.
@jmhmd
jmhmd / keybase.md
Created December 19, 2017 19:06
Keybase proof

Keybase proof

I hereby claim:

  • I am jmhmd on github.
  • I am jhostetter (https://keybase.io/jhostetter) on keybase.
  • I have a public key ASBv5TFWDz7kMTl9W-sqMBm3TM31GjT_5QpCVevWQ5hSogo

To claim this, I am signing this object:

@jmhmd
jmhmd / query.md
Last active October 5, 2016 15:56
Query lex.orionmd.com

Send request:

GET http://lex.orionmd.com/search?l=lexicon&q=query_string

Query string parameters:
l: 'icd10'|'radlex' (String, optional) Lexicon - leaving this parameter out will search a combined corpus of all supported lexicons
q: 'string query' (String, required) Search string

Response:

@jmhmd
jmhmd / save-study.tcl
Created July 30, 2016 03:54
Script for Impax toolbar button
#! _trigger=100 _bitmap=-1 _states=1 _top_toolbar
put_info version "1.0.0.1";
set username [get_info username]
set acc [get_info "study_accession_number" [get_studies selected] ]
set prog_to_launch3 "C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE"
set prog_to_launch2 "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"
set prog_to_launch1 "C:\\Documents and Settings\\RAD\\Local Settings\\Application Data\\Google\\Chrome\\Application\\chrome.exe"
set url_string "http://jhdev1.radiology.umm.edu/query/accession/$acc/?u=$username"
#! _trigger=100 _bitmap=-1 _states=1 _top_toolbar
put_info version "1.0.0.1";
set username [get_info username]
set acc [get_info "study_accession_number" [get_studies selected] ]
set prog_to_launch3 "C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE"
set prog_to_launch2 "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"
set prog_to_launch1 "C:\\Documents and Settings\\RAD\\Local Settings\\Application Data\\Google\\Chrome\\Application\\chrome.exe"
set url_string "http://jhdev1.radiology.umm.edu/query/accession/$acc/?u=$username"
@jmhmd
jmhmd / README.md
Last active February 10, 2017 15:59
Add pagination to individual posts in a Ghost blog

Post pagination in Ghost blogs

This lets you split posts on a Ghost blog into multiple pages. Alls you have to do is put the scripts in, style the buttons, and place a special comment wherever you want the page breaks. This script will use the hash string to denote post pages, i.e. http://your-blog.com/post-123/#2

Usage:
  1. Include the post-pages.js contents in a <script> tag in the footer section of the Code Injection part of settings.
  2. Include the style.css contents in a <style> tag in the header section of Code Injection. (And change styles however)
  3. To insert a page break, put an HTML comment <!-- page-break --> in the post.
  4. Profit!