Important Content Update Message
We are currently updating the OP Help Center content for the release of OP 20. OP 20 (official version 20.0.x) is the certified, 2015 Edition, version of the Office Practicum software. This is displayed in your software (Help tab > About) and in the Help Center tab labeled Version 20.0. We appreciate your patience as we continue to update all of our content.

Request Bulk PIN Generation

The content in this article is relevant to the OP Patient Portal, powered by InteliChart.

Overview

You can now opt in to request Bulk PIN generation for the OP Patient Portal, powered by InteliChart. To do this, you will need to submit a list of all of your active patients in OP who have a parent or self-email address on file. This list must be generated using the SQL located below. We will use your InteliChart portal to generate PINs by email for all of those patients.  

WarningBy sending us the file in this manner, you are attesting that you understand that:
  • We will generate a PIN for every patient in the file who doesn’t already have one generated.
  • If patients do not meet the criteria above, they will not be listed in the file. Therefore, you still need to check their registration status when they come in.

After a PIN is generated for these patients, they will be counted as “portal registered” and you will not have to do anything else to activate them.

Note: PIN generation via the Bulk PIN method described above does not trigger clinical data to be sent to the OP Patient Portal. For clinical data to flow to the portals of the patients included in Bulk PIN generation, one of the following actions must also occur after the patient's account has been activated:
  • An appointment is scheduled
  • A visit note is finalized
  • A CDA is generated

Confirm the Message in the Send PIN Email Template

  1. Check your Send PIN Email message in InteliChart to confirm it says what you want it to say. If edits are necessary, follow the steps here, in the Managing Communication Templates section on page 6.  

Run the Database Query and Export the Report

  1.  Copy the SQL below and run in your Database Viewer:
  • This DBV will show all your active patients and suggest the “most suitable” single email for each.
  • If the patient is 18+ years old, it will look for the Contact = "Self" and use that email address, if it exists.
  • If the patient is <18 years old, it will look for the lowest-numbered Contact that has both an email address AND portal privileges = Minor.   

If you are unfamiliar with using Database Viewer (DB Viewer), click here.

select distinct b.*, next_appt from(

select * from (select (select USER_REGISTERED.REG_NUMBER from user_registered) as opmedid, patno,fname, lname, r.birthdat,home_email as email, denorm_no, floor(datediff(month, dateadd(day,-extract(day from r.birthdat)+1,r.birthdat), dateadd(day,-extract (day from r.birthdat)+1,cast('today' as date)))/12) as age, Cell_phone,home_phone, case when cell_phone <> '' and cell_phone is not null then left(cell_phone,12) else left( home_phone,12) end as pref_phone, portal_prmsn_cd, contact_role,

( case when portal_prmsn_cd = 1 then 'Minor' when portal_prmsn_cd = 2 then 'Full' else 'error' end || ' ' || contact_role ) as who_is_this from register r

inner join schedule s on s.patno = r.patno left outer join register_contact rc on rc.patno = r.patno

left outer join contact c on c.id = rc.contact_id

where r.status_pat = 'ACTIVE' and r.patno >=99 and portal_prmsn_cd >0

and home_email is not null and home_email <> '' and position('@',home_email)>0 and position('.',home_email)>0) where age>=18 and contact_role = 'SELF'

UNION select a.* from (select (select USER_REGISTERED.REG_NUMBER from user_registered) as opmedid, patno,fname, lname, r.birthdat,home_email as email, denorm_no, floor(datediff(month, dateadd(day,-extract(day from r.birthdat)+1,r.birthdat), dateadd(day,-extract (day from r.birthdat)+1,cast('today' as date)))/12) as age,

Cell_phone,home_phone, case when cell_phone <> '' and cell_phone is not null then left(cell_phone,12) else left( home_phone,12) end as pref_phone, portal_prmsn_cd, contact_role, ( case when portal_prmsn_cd = 1 then 'Minor' when portal_prmsn_cd = 2 then 'Full' else 'error' end || ' ' || contact_role ) as who_is_this from register r inner join schedule s on s.patno = r.patno left outer join register_contact rc on rc.patno = r.patno left outer join contact c on c.id = rc.contact_id where r.status_pat = 'ACTIVE' and r.patno >=99 and portal_prmsn_cd >0 and home_email is not null and home_email <> '' and position('@',home_email)>0 and position('.',home_email)>0) a inner join (select patno, min(denorm_no) as which from ( select * from (select (select USER_REGISTERED.REG_NUMBER from user_registered) as opmedid, patno,fname, lname, r.birthdat,home_email as email, denorm_no, floor(datediff(month, dateadd(day,-extract(day from r.birthdat)+1,r.birthdat), dateadd(day,-extract (day from r.birthdat)+1,cast('today' as date)))/12) as age,

Cell_phone,home_phone, case when cell_phone <> '' and cell_phone is not null then left(cell_phone,12) else left( home_phone,12) end as pref_phone, portal_prmsn_cd, contact_role, ( case when portal_prmsn_cd = 1 then 'Minor' when portal_prmsn_cd = 2 then 'Full' else 'error' end || ' ' || contact_role ) as who_is_this from register r inner join schedule s on s.patno = r.patno left outer join register_contact rc on rc.patno = r.patno left outer join contact c on c.id = rc.contact_id where r.status_pat = 'ACTIVE' and r.patno >=99

and portal_prmsn_cd >0 and home_email is not null and home_email <> '' and position('@',home_email)>0 and position('.',home_email)>0) where age<18 and portal_prmsn_cd = 1) group by patno) w on w.patno = a.patno and w.which = a.denorm_no

where age<18 and portal_prmsn_cd = 1) b

left outer join (select patno, min(appt_date) as next_appt from schedule where appt_date >= cast('today' as date) group by patno) s on s.patno = b.patno


  1. Export the results to a CSV file. If you want to remove or update rows, you may do so by editing the file in Excel.
  2. Zip the file and add a password. If you are not sure how to do this, you can refer to any of the following external support sites:
  • Winzip: http://kb.winzip.com/kb/entry/78/
  • 7Z: https://www.eduhk.hk/ocio/content/faq-how-password-protect-my-documents-7-zip
  • WinRAR: https://www.passfab.com/rar/winrar-password-protect.html

Send the Exported File to OP

  1. Send your zipped file to sberman@officepracticum.com
  2. In a separate email, send the password. We will run files on a first-come, first-serve basis. 

Monitor Bulk PIN Progress

  • We’ll try to notify you periodically of progress. When we finish, you’ll receive a de-identified version of the list showing the practice’s OP Med ID, the patient number, the owner of the email that received the PIN, and the status of the patient so that you can see how many PINs we generated, how many we skipped because they already had PINs, as well as any error messages we received for patients.

  • You can also monitor progress by running a canned Practice Portal report (Reports > Canned Reports > Patient Summary), which updates in real time. This report shows how many PINs have been added in the past 24 hours.

Please contact your PSS directly if you have any questions or concerns. If you are unable to locate the contact information for your PSS, call OP Support at 800-218-9916, extension 2 or email support@officepracticum.com.

Parent Steps

Once the parent receives the email with the PIN, they will click the link to be taken to the OP Patient Portal where they must follow the steps described in the Completing the Patient Portal Registration section (bottom of page 1) of the OP Patient Portal: Parent Experience QRG.