Function

SetSAN

Module

uOrders

Last Modified

7/15/2014 3:26:42 PM

Scope

Interfaced

Declaration

function SetSAN(Self: TComponent): string;

Calls Hierarchy


SetSAN
 ├tCryptography.Create
 │ ├tCryptography.Reset
 │ ├sCardReady
 │ │ ├SCardEstablishContext
 │ │ ├SCardListReadersA
 │ │ └SCardConnectA
 │ ├tCryptography.RaiseErr
 │ ├CryptAcquireContext
 │ └CryptGetProvParam
 └getSANFromCard
   ├checkPINValue
   │ ├sCardReady...
   │ ├CryptAcquireContext
   │ ├setPINValue
   │ │ ├CryptAcquireContext
   │ │ ├CryptSetProvParam
   │ │ └CryptReleaseContext
   │ └CryptReleaseContext
   └tCryptography.FindCert
     ├CertOpenSystemStore
     ├CertEnumCertificatesInStore
     ├CertGetNameString
     ├SerialNum
     ├CertDateTimeStr
     ├tCryptography.SigningCert
     │ └CertGetIntendedKeyUsage
     ├CertVerifyTimeValidity
     ├CertFindExtension
     ├tCryptography.CRLDistPoint
     │ └CryptDecodeObject
     ├Revco
     │ └CertVerifyRevocation
     └tCryptography.CertChainCheck
       ├CertCreateCertificateChainEngine
       ├Memo
       ├tCryptography.RaiseErr
       ├CertGetCertificateChain
       └SetStatus
         └Memo

Called-By Hierarchy


                                                          SetSAN
                           TfrmFrame.DigitalSigningSetup1Click┤ 
                                             ExecuteSignOrders┤ 
                                  TfrmOrders.mnuActSignClick┘ │ 
                                         TfrmReview.cmdOKClick┘ 
                                               ReviewChanges┘   
                           TfrmFrame.AllowContextChangeAll┤     
                                TfrmFrame.FormCloseQuery┤ │     
                              TfrmFrame.mnuFileNextClick┤ │     
                            TfrmFrame.mnuFileOpenClick┤ │ │     
                                TfrmFrame.UMInitiate┤ │ │ │     
                       TfrmFrame.mnuFileNextClick...┤ │ │ │     
                       TfrmFrame.mnuFileRefreshClick┤ │ │ │     
                       TfrmOrders.CheckOrderStatus┤ │ │ │ │     
                   TfrmOrders.mnuActChgEvntClick┤ │ │ │ │ │     
                      TfrmOrders.mnuActHoldClick┤ │ │ │ │ │     
                    TfrmOrders.mnuActUnholdClick┤ │ │ │ │ │     
                     TfrmOrders.mnuActRenewClick┤ │ │ │ │ │     
                    TfrmOrders.mnuActChangeClick┤ │ │ │ │ │     
                      TfrmOrders.mnuActCopyClick┘ │ │ │ │ │     
                            TfrmMeds.mnuActDCClick┤ │ │ │ │     
                           TfrmMeds.CheckMedStatus┘ │ │ │ │     
                        TfrmMeds.mnuActHoldClick┤   │ │ │ │     
                       TfrmMeds.mnuActRenewClick┤   │ │ │ │     
                      TfrmMeds.mnuActUnholdClick┤   │ │ │ │     
                      TfrmMeds.mnuActChangeClick┤   │ │ │ │     
                        TfrmMeds.mnuActCopyClick┤   │ │ │ │     
                      TfrmMeds.mnuActRefillClick┘   │ │ │ │     
                                  TfrmFrame.ViewInfo┘ │ │ │     
                               TfrmDCSumm.ViewInfo┤   │ │ │     
                             TfrmConsults.ViewInfo┤   │ │ │     
                     TfrmFrame.pnlRemindersMouseUp┤   │ │ │     
                      TfrmFrame.RemindersChanged┘ │   │ │ │     
                          TfrmFrame.FormCreate┘   │   │ │ │     
                            TfrmFrame.pnlCIRNClick┤   │ │ │     
                      TfrmFrame.pnlVistaWebClick┤ │   │ │ │     
                           TfrmFrame.FormKeyDown┘ │   │ │ │     
                         TfrmFrame.pnlPatientClick┤   │ │ │     
                           TfrmFrame.pnlVisitClick┤   │ │ │     
                     TfrmFrame.pnlPrimaryCareClick┤   │ │ │     
                       TfrmFrame.pnlRemindersClick┤   │ │ │     
                        TfrmFrame.pnlPostingsClick┤   │ │ │     
                            TfrmFrame.pnlFlagClick┤   │ │ │     
                              TfrmFrame.laMHVClick┤   │ │ │     
                             TfrmFrame.laVAA2Click┤   │ │ │     
                               TfrmOrders.ViewInfo┤   │ │ │     
                                 TfrmMeds.ViewInfo┤   │ │ │     
                              TfrmSurgery.ViewInfo┤   │ │ │     
                                TfrmNotes.ViewInfo┤   │ │ │     
                             TfrmProblems.ViewInfo┘   │ │ │     
                     TfrmFrame.mnuFileNotifRemoveClick┤ │ │     
                             TfrmFrame.NextButtonClick┘ │ │     
                           TfrmFrame.SetUpNextButton┘   │ │     
                     TfrmFrame.mnuFileOpenClick...┤     │ │     
                              TfrmFrame.FormResize┘     │ │     
                            TfrmFrame.ChangeFont┘       │ │     
                    TfrmFrame.LoadSizesForUser┤         │ │     
               TfrmFrame.LoadUserPreferences┘ │         │ │     
                      TfrmFrame.UMInitiate┘   │         │ │     
                    TfrmFrame.mnuFontSizeClick┘         │ │     
                           TfrmFrame.mnuFileOpenClick...┤ │     
                           TfrmFrame.ctxContextorPending┤ │     
                          TfrmFrame.StartCCOWContextor┘ │ │     
                                TfrmFrame.FormCreate┘   │ │     
                         TfrmFrame.ctxContextorCommitted┤ │     
                       TfrmFrame.StartCCOWContextor...┘ │ │     
                  TfrmFrame.mnuFileResumeContextGetClick┤ │     
                  TfrmFrame.mnuFileResumeContextSetClick┘ │     
                                  TfrmFrame.FormCloseQuery┤     
                              TfrmFrame.mnuFileReviewClick┤     
                                           UpdateEncounter┘     
                         TfrmFrame.mnuFileEncounterClick┤       
                                 TfrmFrame.ViewInfo...┤ │       
                    TfrmODMedIV.SetValuesFromResponses┤ │       
                             TfrmODMedIV.SetupDialog┤ │ │       
                   TfrmODMedIV.cboSolutionMouseClick┘ │ │       
                       TfrmODMedIV.cboSolutionExit┘   │ │       
                  TfrmODMedIV.cboSolutionMouseClick...┤ │       
                     TfrmODMedIV.cboAdditiveMouseClick┤ │       
                         TfrmODMedIV.cboAdditiveExit┘ │ │       
                                TfrmODAuto.SetupDialog┤ │       
                                   ActivateOrderDialog┤ │       
                           TfrmRemDlg.btnFinishClick┤ │ │       
           TfrmConsults.mnuActNewConsultRequestClick┤ │ │       
                   TfrmConsults.cmdNewConsultClick┘ │ │ │       
                TfrmConsults.mnuActNewProcedureClick┤ │ │       
                      TfrmConsults.cmdNewProcClick┘ │ │ │       
                                        ChangeOrders┤ │ │       
                      TfrmOrders.mnuActChangeClick┤ │ │ │       
                        TfrmMeds.mnuActChangeClick┘ │ │ │       
                                     ChangeOrdersEvt┤ │ │       
                                          CopyOrders┤ │ │       
                        TfrmOrders.mnuActCopyClick┤ │ │ │       
                          TfrmMeds.mnuActCopyClick┤ │ │ │       
                           TfrmODActive.btnOKClick┘ │ │ │       
                                      TransferOrders┤ │ │       
                        TfrmOrders.mnuActCopyClick┤ │ │ │       
                          TfrmMeds.mnuActCopyClick┤ │ │ │       
                           TfrmODActive.btnOKClick┘ │ │ │       
                            TfrmOrders.lstWriteClick┤ │ │       
               TfrmOrders.PlaceOrderForDefaultDialog┤ │ │       
                  TfrmOrders.DisplayDefaultDlgList┤ │ │ │       
                       TfrmOrders.ResetOrderPage┘ │ │ │ │       
               TfrmOrders.btnDelayedOrderClick┘   │ │ │ │       
                                 DisplayEvntDialog┤ │ │ │       
                             SetDelayEventForMed┘ │ │ │ │       
                      TfrmMeds.mnuActCopyClick┘   │ │ │ │       
                                 DisplayEvntDialog┤ │ │ │       
                                  SetViewForCopy┘ │ │ │ │       
                    TfrmOrders.mnuActCopyClick┘   │ │ │ │       
                                 DisplayEvntDialog┘ │ │ │       
                                ExecuteChangeEvt┘   │ │ │       
                 TfrmOrders.mnuActChgEvntClick┘     │ │ │       
                             TfrmMeds.mnuActNewClick┤ │ │       
                           TfrmOMNavA.ActivateDialog┤ │ │       
                         TfrmOMNavA.grdMenuKeyDown┤ │ │ │       
                         TfrmOMNavA.grdMenuMouseUp┘ │ │ │       
                                TfrmOMSet.DoNextItem┘ │ │       
                              TfrmOMSet.InsertList┤   │ │       
                               ActivateOrderList┘ │   │ │       
                     TfrmRemDlg.btnFinishClick┤   │   │ │       
                             ActivateOrderHTML┤   │   │ │       
                    TfrmOrders.lstWriteClick┤ │   │   │ │       
    TfrmOrders.PlaceOrderForDefaultDialog...┘ │   │   │ │       
                              ActivateOrderSet┤   │   │ │       
                   TfrmRemDlg.btnFinishClick┤ │   │   │ │       
TfrmConsults.mnuActNewConsultRequestClick...┤ │   │   │ │       
     TfrmConsults.mnuActNewProcedureClick...┤ │   │   │ │       
                    TfrmOrders.lstWriteClick┤ │   │   │ │       
    TfrmOrders.PlaceOrderForDefaultDialog...┤ │   │   │ │       
                     TfrmMeds.mnuActNewClick┤ │   │   │ │       
                TfrmOMNavA.ActivateDialog...┤ │   │   │ │       
                     TfrmOMSet.DoNextItem...┘ │   │   │ │       
                       TfrmOMNavA.DoSelectList┘   │   │ │       
                     TfrmOMNavA.grdMenuKeyUp┤     │   │ │       
                   TfrmOMNavA.grdMenuMouseUp┘     │   │ │       
                                        SkipToNext┤   │ │       
                         TfrmOMSet.DoNextItem...┘ │   │ │       
                            TfrmOMSet.UMDelayEvent┘   │ │       
                               TfrmOMSet.InsertList...┤ │       
                                TfrmODMeds.SetupDialog┤ │       
                             TfrmODMeds.btnSelectClick┤ │       
                             TfrmODMeds.UMDelayClick┘ │ │       
                                    ExecuteRenewOrders┘ │       
                         TfrmOrders.mnuActRenewClick┤   │       
                           TfrmMeds.mnuActRenewClick┘   │       
                                        EncounterPresent┤       
                                      ReadyForNewOrder┤ │       
                           TfrmRemDlg.btnFinishClick┤ │ │       
        TfrmConsults.mnuActNewConsultRequestClick...┤ │ │       
             TfrmConsults.mnuActNewProcedureClick...┤ │ │       
                                     ChangeOrders...┤ │ │       
                                     ChangeOrdersEvt┤ │ │       
                                       CopyOrders...┤ │ │       
                                   TransferOrders...┤ │ │       
                            TfrmOrders.lstWriteClick┤ │ │       
                             TfrmMeds.mnuActNewClick┘ │ │       
                                     ReadyForNewOrder1┤ │       
            TfrmOrders.PlaceOrderForDefaultDialog...┘ │ │       
                              TfrmOrders.mnuActDCClick┤ │       
                             TfrmOrders.mnuActRelClick┤ │       
                            TfrmOrders.mnuActHoldClick┤ │       
                          TfrmOrders.mnuActUnholdClick┤ │       
                           TfrmOrders.mnuActRenewClick┤ │       
                         TfrmOrders.mnuActReleaseClick┤ │       
                         TfrmOrders.mnuActOnChartClick┤ │       
                            TfrmOrders.mnuActSignClick┤ │       
                                TfrmMeds.mnuActDCClick┤ │       
                              TfrmMeds.mnuActHoldClick┤ │       
                             TfrmMeds.mnuActRenewClick┤ │       
                            TfrmMeds.mnuActUnholdClick┤ │       
                              TfrmMeds.mnuActCopyClick┤ │       
                            TfrmMeds.mnuActRefillClick┘ │       
                                     EncounterPresentEDO┤       
                                   ReadyForNewOrder...┤ │       
                         TfrmOrders.mnuActChgEvntClick┤ │       
                          TfrmOrders.mnuActChangeClick┤ │       
                            TfrmOrders.mnuActCopyClick┤ │       
                       TfrmOrders.btnDelayedOrderClick┤ │       
                            TfrmMeds.mnuActChangeClick┤ │       
                              TfrmMeds.mnuActCopyClick┘ │       
                                             UpdateVisit┤       
                                           EditPCEData┤ │       
                             TfrmSurgery.cmdPCEClick┤ │ │       
                                 UpdateEncounterInfo┘ │ │       
                             TfrmNotes.cmdPCEClick┘   │ │       
                        TfrmVitals.btnEnterVitalsClick┘ │       
                                             UpdateVisit┤       
                                        EncounterPresent┘       
                         TfrmProblems.lstProbActsClick┘         
                     TfrmProblems.wgProbDataDblClick┤           
                           TfrmProblems.lstViewClick┘           
                   TfrmProblems.HighlightDuplicate┘             
                         TfrmProblems.AddProblem┤               
              TfrmProblems.lstProbActsClick...┤ │               
                 TfrmProblems.lstProbPickClick┤ │               
              TfrmProblems.lstProbPickDblClick┤ │               
              TfrmProblems.edProbEntKeyPress┘ │ │               
                      TfrmProblems.UMPLLexicon┘ │               
                   TfrmdlgProb.bbChangeProbClick┘               

Calls

Name Declaration Comments
tCryptography.Create constructor Create; -
getSANFromCard function getSANFromCard(InputForm: TComponent; crypto: tCryptography): String; -

Called-By

Name Declaration Comments
TfrmReview.cmdOKClick procedure cmdOKClick(Sender: TObject); -
TfrmFrame.DigitalSigningSetup1Click procedure DigitalSigningSetup1Click(Sender: TObject); -
ExecuteSignOrders {Forward} function ExecuteSignOrders(SelectedList: TList): Boolean; -


Source

236   function SetSAN(Self: TComponent): string;
237   var
238     crypto: tCryptography;
239     i: Integer;
240     setUPN, successMsg: string;
241   begin
242       Result := '';
243       if InfoBox(
244         '        '
245         + User.name
246         + CRLF
247         + 'Your VistA account has not been linked to a PIV card.'
248         + CRLF
249         + 'CPRS will now attempt to retrieve some information'
250         + CRLF
251         + 'from your PIV card in order for you to digitally sign orders.'
252         + CRLF
253         + 'This will require entry of the PIN associated with your PIV card.'
254         + CRLF
255         + 'Would you like to continue?',
256         'Digital Signing Setup',MB_YESNO or MB_ICONQUESTION) = IDYES then
257         begin
258           crypto := tCryptography.Create();
259           crypto.VistaUserName := RPCBrokerV.User.Name;
260           Result := getSANFromCard(Self,crypto);
261           if Result='' then ShowMsg('CPRS was not able to link your VistA account to a PIV card.')
262           else
263           begin
264             setUPN := sCallV('XUS PKI SET UPN', [Result]);
265             if setUPN = '1' then
266             begin
267               fFrame.frmFrame.DigitalSigningSetup1.Visible := False;
268               successMsg :=
269                 '        '
270                 + User.name
271                 + CRLF
272                 + 'Your PIV card (' + Result + ') has been successfully linked'
273                 + CRLF
274                 + 'to this VistA account, which will allow you to digitally sign orders.'
275                 + CRLF
276                 + 'This process does not however provide you the authorization to place'
277                 + CRLF
278                 + 'controlled substance prescription orders.'
279                 + CRLF;
280               CallV('ORDEA LNKMSG',[]);
281               for i := 0 to RPCBrokerV.Results.Count - 1 do
282               begin
283                 successMsg := successMsg + CRLF + RPCBrokerV.Results.Strings[i];
284               end;
285               ShowMsg(successMsg);
286               end
287             else begin
288               ShowMsg(
289                 '        '
290                 + User.name
291                 + CRLF
292                 + 'CPRS was not able to link your VistA account to a PIV card.'
293                 + CRLF
294                 + 'One possible cause is that your card is already linked to another VistA account.');
295                 Result:='';
296             end;
297           end;
298           crypto.Free;
299         end;
300   end;