Ignore:
Timestamp:
Dec 4, 2009, 8:26:01 PM (14 years ago)
Author:
George Lilly
Message:

WorldVistAEHR overlayed on FOIAVistA

Location:
FOIAVistA/tag/r
Files:
1 edited
1 copied

Legend:

Unmodified
Added
Removed
  • FOIAVistA/tag/r/CLINICAL_REMINDERS-PXRM/PXRMEXCS.m

    r628 r636  
    1 PXRMEXCS ; SLC/PKR - Routines to compute checksums. ;07/27/2007
    2  ;;2.0;CLINICAL REMINDERS;**6**;Feb 04, 2005;Build 123
    3  ;====================================================
    4 CHECKSUM(ATTR,START,END) ;Get the the checksum for a packed reminder
    5  ;component and load it into the attribute array.
    6  N CS,LINE
    7  ;If checksum is in packed component return it otherwise calculate it.
    8  I ATTR("FILE NUMBER")=0 D
    9  . S LINE=^PXD(811.8,PXRMRIEN,100,START-3,0)
    10  . S CS=$$GETTAGV^PXRMEXU3(LINE,"<CHECKSUM>")
    11  . I CS="" S CS=$$PRTNCS(PXRMRIEN,START,END)
    12  I ATTR("FILE NUMBER")>0 D
    13  . S LINE=^PXD(811.8,PXRMRIEN,100,START-2,0)
    14  . S CS=$$GETTAGV^PXRMEXU3(LINE,"<CHECKSUM>")
    15  . I CS="" S CS=$$PFDACS(PXRMRIEN,START,END)
    16  S ATTR("CHECKSUM")=CS
    17  Q
    18  ;
    19  ;====================================================
    20 DIQOUTCS(DIQOUT) ;Return checksum for a processed DIQOUT array.
    21  N CS,DATA,FIELD,FNUM,IENS,IND,SFN,STRING,TARGET,TEXT,WP
    22  S FNUM=$O(DIQOUT(""))
    23  D FIELD^DID(FNUM,"EDIT HISTORY","","SPECIFIER","TARGET")
    24  S SFN=+$G(TARGET("SPECIFIER"))
    25  S (CS,FNUM)=0
    26  F  S FNUM=$O(DIQOUT(FNUM)) Q:FNUM=""  D
    27  . I FNUM=SFN Q
    28  . S IENS=""
    29  . F  S IENS=$O(DIQOUT(FNUM,IENS)) Q:IENS=""  D
    30  .. S FIELD=0
    31  .. F  S FIELD=$O(DIQOUT(FNUM,IENS,FIELD)) Q:FIELD=""  D
    32  ... S DATA=DIQOUT(FNUM,IENS,FIELD)
    33  ... S TEXT=FNUM_$L(IENS,",")_FIELD_DATA
    34  ... S CS=$$CRC32^XLFCRC(TEXT,CS)
    35  ... I DATA["WP-start" F IND=1:1:$P(DATA,"~",2) D
    36  .... S TEXT=DIQOUT(FNUM,IENS,FIELD,IND)
    37  .... S CS=$$CRC32^XLFCRC(TEXT,CS)
    38  Q CS
    39  ;
     1PXRMEXCS ; SLC/PKR - Routines to compute checksums. ;12/21/2004
     2 ;;2.0;CLINICAL REMINDERS;;Feb 04, 2005
    403 ;====================================================
    414FILE(FILENUM,IEN) ;Return checksum for entry IEN in file FILENUM.
    42  N CS,DIQOUT,IENROOT,MSG
    43  D GETS^DIQ(FILENUM,IEN,"**","N","DIQOUT","MSG")
    44  ;Remove edit history from all reminder files.
    45  D RMEH^PXRMEXPU(FILENUM,.DIQOUT,1)
    46  ;Convert the iens to the FDA adding form.
    47  D CONTOFDA^PXRMEXPU(.DIQOUT,.IENROOT)
    48  S CS=$$DIQOUTCS(.DIQOUT)
     5 N CS,LC,REF,ROOT,TARGET
     6 D FILE^DID(FILENUM,"","GLOBAL NAME","TARGET")
     7 S ROOT=$$CREF^DILF(TARGET("GLOBAL NAME"))
     8 K ^TMP($J,"PXRMEXCS")
     9 M ^TMP($J,"PXRMEXCS")=@ROOT@(IEN)
     10 S REF="^TMP($J,""PXRMEXCS"")"
     11 S REF=$NA(@REF)
     12 S (CS,LC)=0
     13 F  S REF=$Q(@REF) Q:REF'["PXRMEXCS"  S LC=LC+1,CS=CS+$$LINECS(LC,@REF)
     14 K ^TMP($J,"PXRMEXCS")
    4915 Q CS
    5016 ;
     
    6531 N CS,IND,LINE
    6632 S (CS,IND)=0
    67  F  S IND=$O(@GBL@(IND)) Q:+IND=0  S LINE=@GBL@(IND),CS=$$CRC32^XLFCRC(LINE,CS)
     33 F  S IND=$O(@GBL@(IND)) Q:+IND=0  S LINE=@GBL@(IND),CS=CS+$$LINECS(IND,LINE)
     34 Q CS
     35 ;
     36 ;====================================================
     37LINECS(LINENUM,STRING) ;Return checksum of line number LINEUM whose contents
     38 ;is STRING.
     39 N CS,IND,LEN
     40 S CS=0
     41 S LEN=$L(STRING)
     42 F IND=1:1:LEN S CS=CS+($A(STRING,IND)*(LINENUM+IND))
    6843 Q CS
    6944 ;
     
    7348 S NLINES=+$P($G(^XMB(3.9,XMZ,2,0)),U,3)
    7449 S CS=0
    75  F IND=1:1:NLINES S LINE=$G(^XMB(3.9,XMZ,2,IND,0)),CS=$$CRC32^XLFCRC(LINE,CS)
    76  Q CS
    77  ;
    78  ;====================================================
    79 PFDACS(IEN,FDASTART,FDAEND) ;Return checksum for FDA array of packed
    80  ;reminder component.
    81  N CS,DATA,IENS,IND,JND,FIELD,FNUM,SFN,TARGET,TEMP,TEXT
    82  S TEMP=^PXD(811.8,IEN,100,FDASTART,0)
    83  S FNUM=$P(TEMP,";",1)
    84  D FIELD^DID(FNUM,"EDIT HISTORY","","SPECIFIER","TARGET")
    85  S SFN=+$G(TARGET("SPECIFIER"))
    86  S CS=0
    87  F IND=FDASTART:1:FDAEND D
    88  . S TEMP=^PXD(811.8,IEN,100,IND,0)
    89  . S DATA=$P(TEMP,"~",2,99)
    90  . S TEMP=$P(TEMP,"~",1)
    91  . S FNUM=$P(TEMP,";",1)
    92  . I FNUM=SFN Q
    93  . I FNUM="Exchange Stub" Q
    94  . S IENS=$P(TEMP,";",2)
    95  . S FIELD=$P(TEMP,";",3)
    96  . S TEXT=FNUM_$L(IENS,",")_FIELD_DATA
    97  . S CS=$$CRC32^XLFCRC(TEXT,CS)
    98  . I DATA["WP-start" F JND=1:1:$P(DATA,"~",2) D
    99  .. S IND=IND+1
    100  .. S TEXT=^PXD(811.8,IEN,100,IND,0)
    101  .. S CS=$$CRC32^XLFCRC(TEXT,CS)
     50 F IND=1:1:NLINES S LINE=$G(^XMB(3.9,XMZ,2,IND,0)),CS=CS+$$LINECS(IND,LINE)
    10251 Q CS
    10352 ;
     
    10554ROUTINE(RA) ;Return checksum for a routine loaded in array RA. RA has the
    10655 ;form created by ^%ZOSF("LOAD") i.e, RA(1,0) ... RA(N,0).
    107  N CS,IND,TEXT
     56 N CS,IND,LINE
    10857 S (CS,IND)=0
    109  ;Get rid of the build number on the second line.
    110  S RA(2,0)=$P(RA(2,0),";",1,6)
    111  F  S IND=$O(RA(IND)) Q:+IND=0  D
    112  . S TEXT=RA(IND,0)
    113  . S CS=$$CRC32^XLFCRC(RA(IND,0),CS)
     58 F  S IND=$O(RA(IND)) Q:+IND=0  S CS=CS+$$LINECS(IND,RA(IND,0))
    11459 Q CS
    11560 ;
    11661 ;====================================================
    117 RTNCS(ROUTINE) ;Return checksum for a routine ROUTINE.
     62RTN(ROUTINE) ;Return checksum for a routine ROUTINE.
    11863 N CS,DIF,RA,X,XCNP
    11964 S XCNP=0
     
    12873 Q CS
    12974 ;
    130  ;====================================================
    131 PRTNCS(IEN,START,END) ;Return checksum for a packed routine.
    132  N CS,IND,SL,TEXT
    133  S CS=0,SL=START+1
    134  F IND=START:1:END D
    135  . S TEXT=^PXD(811.8,IEN,100,IND,0)
    136  . ;Get rid of the build number on the second line.
    137  . I IND=SL S TEXT=$P(TEXT,";",1,6)
    138  . S CS=$$CRC32^XLFCRC(TEXT,CS)
    139  Q CS
    140  ;
Note: See TracChangeset for help on using the changeset viewer.