Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: PXRMEXCC

PXRMEXCC.m

Go to the documentation of this file.
  1. PXRMEXCC ; SLC/PKR - Exchange component check. ;07/02/2020
  1. ;;2.0;CLINICAL REMINDERS;**47,74**;Feb 04, 2005;Build 5
  1. ;Used to find corrupted components, the indicator is when the Index
  1. ;is not at the proper line in the Exchange file.
  1. ;======================================================
  1. COMPCHK(IEN) ;Check the components for the Exchange entry.
  1. N BADIND,CSTART,CEND,END,FDAEND,FDASTART,FILENAME,FILENUM,IND,INDEXAT
  1. N JND,LINE,LNUM,NCMPNT,START,SUB,TAG,TEXT,TYPE
  1. ;Find the Index
  1. S (IND,INDEXAT)=0
  1. F S IND=$O(^PXD(811.8,IEN,100,IND)) Q:(INDEXAT>0)!(IND="") D
  1. . S LINE=^PXD(811.8,IEN,100,IND,0)
  1. . I LINE="<INDEX>" S INDEXAT=IND
  1. S JND=INDEXAT+1
  1. S LINE=^PXD(811.8,IEN,100,JND,0)
  1. S NCMPNT=+$$GETTAGV^PXRMEXU3(LINE,"<NUMBER_OF_COMPONENTS>")
  1. ;Build the list of components.
  1. K ^TMP($J,"CMPNT")
  1. F IND=1:1:NCMPNT D
  1. . K END,START
  1. . F S JND=JND+1,LINE=$G(^PXD(811.8,IEN,100,JND,0)) Q:(LINE="</COMPONENT>")!(LINE="") D
  1. .. S TAG=$$GETTAG^PXRMEXU3(LINE)
  1. .. I TAG["START" S START(TAG)=+$$GETTAGV^PXRMEXU3(LINE,TAG)
  1. .. I TAG["END" S END(TAG)=+$$GETTAGV^PXRMEXU3(LINE,TAG)
  1. . I $D(START("<M_ROUTINE_START>")) D
  1. .. S CSTART=START("<M_ROUTINE_START>")
  1. .. S ^TMP($J,"CMPNT",IND,"TYPE")="ROUTINE"
  1. .. S LINE=^PXD(811.8,IEN,100,CSTART+1,0)
  1. .. S ^TMP($J,"CMPNT",IND,"NAME")=$$GETTAGV^PXRMEXU3(LINE,"<ROUTINE_NAME>")
  1. .. S ^TMP($J,"CMPNT",IND,"FILENUM")=0
  1. ..;Save the actual start and end of the code.
  1. .. S ^TMP($J,"CMPNT",IND,"START")=START("<ROUTINE_CODE_START>")
  1. .. S ^TMP($J,"CMPNT",IND,"END")=END("<ROUTINE_CODE_END>")
  1. . I $D(START("<FILE_START>")) D
  1. .. S CSTART=START("<FILE_START>")
  1. .. S LINE=^PXD(811.8,IEN,100,CSTART+1,0)
  1. .. S (^TMP($J,"CMPNT",IND,"TYPE"),^TMP($J,"CMPNT",IND,"FILENAME"))=$$GETTAGV^PXRMEXU3(LINE,"<FILE_NAME>",1)
  1. .. S LINE=^PXD(811.8,IEN,100,CSTART+2,0)
  1. .. S ^TMP($J,"CMPNT",IND,"FILENUM")=$$GETTAGV^PXRMEXU3(LINE,"<FILE_NUMBER>")
  1. .. S LINE=^PXD(811.8,IEN,100,CSTART+3,0)
  1. .. S (^TMP($J,"CMPNT",IND,"NAME"),^TMP($J,"CMPNT",IND,"POINT_01"))=$$GETTAGV^PXRMEXU3(LINE,"<POINT_01>",1)
  1. .. S LINE=^PXD(811.8,IEN,100,CSTART+6,0)
  1. .. S ^TMP($J,"CMPNT",IND,"SELECTED")=$$GETTAGV^PXRMEXU3(LINE,"<SELECTED>")
  1. ..;Save the actual start and end of the FileMan FDA.
  1. .. S ^TMP($J,"CMPNT",IND,"FDA_START")=START("<FDA_START>")
  1. .. S ^TMP($J,"CMPNT",IND,"FDA_END")=END("<FDA_END>")
  1. .. S ^TMP($J,"CMPNT",IND,"IEN_ROOT_START")=$G(START("<IEN_ROOT_START>"))
  1. .. S ^TMP($J,"CMPNT",IND,"IEN_ROOT_END")=$G(END("<IEN_ROOT_END>"))
  1. ;Look for missing TYPE, this is an indicator of an issue.
  1. S TEXT(1)="Component check for Exchange Entry IEN="_IEN_"."
  1. S LNUM=1
  1. ;Look for missing component Type, FDA_END, and FDA_START.
  1. S BADIND=0,IND=1
  1. I $G(^TMP($J,"CMPNT",1,"TYPE"))="" S BADIND=1
  1. F S IND=$O(^TMP($J,"CMPNT",IND)) Q:(BADIND)!(IND="") D
  1. . S TYPE=$G(^TMP($J,"CMPNT",IND,"TYPE"))
  1. . I TYPE="" S BADIND=IND
  1. . S FDAEND=$G(^TMP($J,"CMPNT",IND,"FDA_END"))
  1. . I $G(^PXD(811.8,IEN,100,(FDAEND+1),0))'="]]>" S BADIND=IND
  1. . S FDASTART=$G(^TMP($J,"CMPNT",IND,"FDA_START"))
  1. . I $G(^PXD(811.8,IEN,100,FDASTART,0))'[".01" S BADIND=IND
  1. I BADIND=0 D Q
  1. . S LNUM=LNUM+1,TEXT(LNUM)="Cannot determine the problem."
  1. . D DISPLAY(LNUM,.TEXT)
  1. . K ^TMP($J,"CMPNT")
  1. I BADIND>0 D
  1. . S LNUM=LNUM+1,TEXT(LNUM)="There appears to be a problem in this component area."
  1. . S LNUM=LNUM+1,TEXT(LNUM)="Most likely it is component "_BADIND_"."
  1. . S CSTART=$S(BADIND>1:(BADIND-1),1:1)
  1. . S CEND=$O(^TMP($J,"CMPNT",""),-1)
  1. . S CEND=$S(BADIND=CEND:CEND,1:(BADIND+1))
  1. . F IND=CSTART:1:CEND D
  1. .. S LNUM=LNUM+1,TEXT(LNUM)=""
  1. .. S LNUM=LNUM+1,TEXT(LNUM)="Component number "_IND
  1. .. S SUB=""
  1. .. F S SUB=$O(^TMP($J,"CMPNT",IND,SUB)) Q:SUB="" D
  1. ... S LNUM=LNUM+1,TEXT(LNUM)=" "_SUB_"="_^TMP($J,"CMPNT",IND,SUB)
  1. .. S LNUM=LNUM+1,TEXT(LNUM)=""
  1. .. S LNUM=LNUM+1,TEXT(LNUM)="The component details are:"
  1. .. S START=^TMP($J,"CMPNT",IND,"FDA_START")-2
  1. .. S END=^TMP($J,"CMPNT",IND,"FDA_END")+2
  1. .. F JND=START:1:END S LNUM=LNUM+1,TEXT(LNUM)=^PXD(811.8,IEN,100,JND,0)
  1. D DISPLAY(LNUM,.TEXT)
  1. K ^TMP($J,"CMPNT")
  1. Q
  1. ;
  1. ;===============
  1. DISPLAY(LNUM,TEXT) ;Display the error information.
  1. S LNUM=LNUM+1,TEXT(LNUM)=""
  1. S LNUM=LNUM+1,TEXT(LNUM)="If you need assistance with this, call the National Help Desk and have them"
  1. S LNUM=LNUM+1,TEXT(LNUM)="enter a ticket."
  1. D BROWSE^DDBR("TEXT","N","Corrupted Component Information")
  1. I $D(DDS) D REFRESH^DDSUTL S DY=IOSL-7,DX=0 X IOXY S $Y=DY,$X=DX
  1. Q
  1. ;