asdf

In case you haven’t noticed, the CPS and EMR demo systems have pretty easy default passwords. Oddly, if an account gets locked or the password expires, there isn’t an easy way to get a password less than 6 characters into the user management system.

You don’t have to be able to decode the passwords in the DoctorFacility table to set the password of a user. The following statement will set hwinston’s password to ‘asdf’

update DoctorFacility set LoginAttempts = 0, password = 'ZjBlNGMyZjc2YzU4OTE2ZWMyNThmMjQ2ODUxYmVhMDkxZDE0ZDQyNDdhMmZjM2UxODY5NDQ2MWIxODE2ZTEzYg==' 
where LoginUser = 'hwinston'

Compatibility View and CPS

The Blackbird Content Framework works best when using the latest version of IE on your workstation.

Meanwhile, CPS requires version 9 or greater to run.  Unfortunately, the CPS application doesn’t seem to know that 11 is greater than 9.

As a result, you may see this message when starting CPS:

CPS-IE-VersionThe workaround, is to tell CPS that the version of IE it is using is older than IE 11. To do so, click on the gear icon in the IE address bar; select “Compatibility View settings”.

CompatibilitySettingsAfter opening the Compatibility View Settings Dialog, add localhost, or the host name or IP address of the server that you are using to launch CPS.

CompatibilitySites

Unfortunately, this must be done on a per-user basis. At any rate, after updating this setting, all should be well.

Fixing a Troublesome Document

As a Centricity content developer, I sometimes find myself in a situation where a Centricity document is in a state that will not allow it to be opened again. These documents are sometimes called dead documents. If they they cause the chart to not behave properly or cause CPS or EMR to crash when opened, I have heard the term “Poison Documents”

So these steps will remedy the situation:

Your first task is to find the document that is dead; you may be able to see the visdocid from the Centricity UI. If so, you can look it up that way; if not, you need to find the document via the PID or some other method.

SELECT [PID]
 ,[SDID]
 ,[SUMMARYNOTE]
 ,[CLINICALDATE]
 ,[HOLDTEXT]
 ,[NOTETEXT]
 ,[DB_UPDATED_DATE]
 FROM [demo].[dbo].[DOCUMENT] where PID = (Select PatientProfile.PID From [PatientProfile] where First ='Gabriele' and Last = 'Oberheim') order by DB_UPDATED_DATE DESC

Once you have found the document, you can make changes to the database to fix it. One thing you might need to do, depending on what the behavior is in the document, is to neutralize bad acting MEL code that is part of the update. Do this by changing HOLDTEXT and NOTETEXT so that it contains short, vanilla RTF.

update DOCUMENT set HOLDTEXT='{\rtf1\ansi\ftnbj{\fonttbl{\f0 \fswiss Arial;}}', NOTETEXT='{\rtf1\ansi\ftnbj{\fonttbl{\f0 \fswiss Arial;}}' where SDID = '0000000000000000'

The next thing to do is to eliminate the locks on the document which you will need to do to open it back up in the Centricity application so that you can end the update.

delete from LOGLOCKS where SDID = '0000000000000000' 

And there you have it.

Getting a Unique ID in CPS

In certain instances, you may find that theere is a defect in LinkLogic, or you may have another reason for doing this, but for what it’s worth, there may come a time when you need to insert a row into a Centricity database that has a unique ID field.

There is a built-in stored procedure that performs the task, but it takes an input parameter, which can make it tricky to call. You can either create a wrapper function for the procedure that declares an input parameter and returns the value or you can copy the code and remove the params altogether.

I have taken the second approach so that you can see the logic of the full procedure.

/****** Object:  StoredProcedure [dbo].[CUSTOMgetUniqueEMRID]    Script Date: 05/05/2013 23:05:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- CUSTOM_getUniqueEMRID
-- returns a generated emrid as numeric(19,0)
-- NOTE: dependent on emridcontrol table being setup and setupEMRIDControl having been called
CREATE procedure [dbo].[CUSTOM_getUniqueEMRID]

as
SET NOCOUNT ON
begin
     declare @theID numeric(19,0)
     declare @theOffset numeric(19,0)
     declare @theLastID numeric(19,0), @theWSID numeric(19,0)
     declare emridcontrolcursor cursor forward_only for
     select lastid,wsid from dbo.emridcontrol for update of lastid
     set @theID=0
     set @theOffset=50000

open emridcontrolcursor
fetch next from emridcontrolcursor
     into @theLastID, @theWSID

if @@fetch_status = 0
     begin
          set @theID = dbo.convert_date_to_id(getdate()) + @theWSID
          if @theID <=@theLastID
               set @theID = @theLastID+@theOffset
          update dbo.emridcontrol set LastID=@theID
     end
else
     RAISERROR('unable to read emridcontrol table',10,1)

close emridcontrolcursor
deallocate emridcontrolcursor
select @theID as getUniqueEMRID
end