Ignore:
Timestamp:
Dec 4, 2009, 12:11:15 AM (14 years ago)
Author:
George Lilly
Message:

revised back to 6/30/08 version

File:
1 edited

Legend:

Unmodified
Added
Removed
  • WorldVistAEHR/trunk/r/CLINICAL_REMINDERS-PXRM/PXRMOUTC.m

    r613 r623  
    1 PXRMOUTC        ; SLC/PKR - Clinical Maintenance output. ;07/06/2007
    2         ;;2.0;CLINICAL REMINDERS;**4,6**;Feb 04, 2005;Build 123
    3         ;================================================
    4 CM(DEFARR,PXRMPDEM,PCLOGIC,RESLOGIC,RESDATE,FIEVAL)     ;Prepare the
    5         ;clinical maintenance output.
    6         N IND,JND,FIDATA,FINDING,FLIST,FTYPE
    7         N HDR,NHDR,IFIEVAL,LIST,NFLINES,NTXT,NUM
    8         N TEMP,TEXT
    9         S NTXT=0
    10         ;Check for a dead patient
    11         I +$G(PXRMPDEM("DOD"))>0 D
    12         . S TEMP=$$FMTE^XLFDT(PXRMPDEM("DOD"),"5DZ")
    13         . S TEXT="Patient is deceased, date of death: "_TEMP
    14         . D ADDTXT^PXRMOUTU(1,PXRMRM,.NTXT,TEXT)
    15         ;Display the frequency information only if there is resolution logic.
    16         I RESLOGIC'="" D FREQ(.DEFARR,.NTXT,.TEXT)
    17         ;Output the AGE match/no match text.
    18         D AGE^PXRMFNFT(PXRMPDEM("DFN"),.DEFARR,.FIEVAL,.NTXT)
    19         ;Process the findings in the order: patient cohort, resolution,
    20         ;age, and informational.
    21         M FIDATA=FIEVAL
    22         F FTYPE="PCL","RES","AGE","INFO" D
    23         . S LIST=$S(FTYPE="PCL":DEFARR(32),FTYPE="RES":DEFARR(36),FTYPE="AGE":DEFARR(40),FTYPE="INFO":DEFARR(42))
    24         .;Output the general logic text.
    25         . I FTYPE="PCL" D LOGIC^PXRMFNFT(PXRMPDEM("DFN"),PCLOGIC,FTYPE,"D",.DEFARR,.NTXT)
    26         . I FTYPE="RES",$P(PCLOGIC,U,1) D LOGIC^PXRMFNFT(PXRMPDEM("DFN"),RESLOGIC,FTYPE,"D",.DEFARR,.NTXT)
    27         .;Process the findings for each type.
    28         . K TEXT
    29         . S (NHDR,NFLINES)=0
    30         . S NUM=+$P(LIST,U,1)
    31         . S FLIST=$P(LIST,U,2)
    32         . F IND=1:1:NUM D
    33         .. S FINDING=$P(FLIST,";",IND)
    34         ..;No output for age or sex findings.
    35         .. I (FINDING="AGE")!(FINDING="SEX") Q
    36         ..;Make sure each finding is processed only once.
    37         .. I '$D(FIDATA(FINDING)) Q
    38         .. K IFIEVAL
    39         .. ;I FIEVAL(FINDING) M IFIEVAL=FIEVAL(FINDING)
    40         .. ;E  S IFIEVAL=0
    41         .. I FIEVAL(FINDING) D
    42         ... M IFIEVAL=FIEVAL(FINDING)
    43         ...;Remove any false occurrences so they are not displayed.
    44         ... S JND=0
    45         ... F  S JND=+$O(IFIEVAL(JND)) Q:JND=0  K:'IFIEVAL(JND) IFIEVAL(JND)
    46         .. E  S IFIEVAL=0
    47         ..;If the finding is false all we need to do is process the not found
    48         ..;text. If it is true we also need to output the finding information.
    49         .. I IFIEVAL D FOUT(1,.IFIEVAL,.NFLINES,.TEXT)
    50         ..;Output the found/not found text for the finding.
    51 FNF     .. D FINDING^PXRMFNFT(3,PXRMPDEM("DFN"),FINDING,.IFIEVAL,.NFLINES,.TEXT)
    52         ..;Make sure each finding is processed only once.
    53         .. K FIDATA(FINDING)
    54         .;
    55         .;If there was any text for this finding type create a header.
    56         . D HEADER(FTYPE,NFLINES,RESDATE,.NHDR,.HDR)
    57         .;Output the header and the finding text.
    58         . D ADDTXTA^PXRMOUTU(1,PXRMRM,.NTXT,NHDR,.HDR)
    59         . D COPYTXT^PXRMOUTU(.NTXT,NFLINES,.TEXT)
    60         ;Output INFO nodes
    61         D INFO^PXRMOUTU(PXRMITEM,.NTXT)
    62         Q
    63         ;
    64         ;================================================
    65 FOUT(INDENT,IFIEVAL,NLINES,TEXT)        ;Do output for individual findings
    66         ;in the FINDING array.
    67         I $D(IFIEVAL("TERM")) D OUTPUT^PXRMTERM(1,.IFIEVAL,.NFLINES,.TEXT) Q
    68         N FTYPE
    69         S FTYPE=$P(IFIEVAL("FINDING"),U,1)
    70         S FTYPE=$P(FTYPE,";",2)
    71         I FTYPE="AUTTEDT(" D OUTPUT^PXRMEDU(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
    72         I FTYPE="AUTTEXAM(" D OUTPUT^PXRMEXAM(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
    73         I FTYPE="AUTTHF(" D OUTPUT^PXRMHF(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
    74         I FTYPE="AUTTIMM(" D OUTPUT^PXRMIMM(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
    75         I FTYPE="AUTTSK(" D OUTPUT^PXRMSKIN(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
    76         I FTYPE="GMRD(120.51," D OUTPUT^PXRMVITL(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
    77         I FTYPE="LAB(60," D OUTPUT^PXRMLAB(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
    78         I FTYPE="ORD(101.43," D OUTPUT^PXRMORDR(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
    79         I FTYPE="PS(50.605," D OUTPUT^PXRMDRCL(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
    80         I FTYPE="PSDRUG(" D OUTPUT^PXRMDRUG(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
    81         I FTYPE="PSNDF(50.6," D OUTPUT^PXRMDGEN(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
    82         I FTYPE="PS(55," D OUTPUT^PXRMDIN(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
    83         I FTYPE="PS(55NVA," D OUTPUT^PXRMDNVA(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
    84         I FTYPE="PSRX(" D OUTPUT^PXRMDOUT(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
    85         I FTYPE="PXD(811.2," D OUTPUT^PXRMTAX(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
    86         I FTYPE="PXRMD(802.4," D OUTPUT^PXRMFF(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
    87         I FTYPE="PXRMD(810.9," D OUTPUT^PXRMLOCF(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
    88         I FTYPE="PXRMD(811.4," D OUTPUT^PXRMCF(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
    89         I FTYPE="RAMIS(71," D OUTPUT^PXRMRAD(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
    90         I FTYPE="YTT(601.71," D OUTPUT^PXRMMH(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
    91         Q
    92         ;
    93         ;================================================
    94 FREQ(DEFARR,NTXT,TEXT)  ;Display the frequency information.
    95         N FREQ,TEMP
    96         ;If there was a custom date due print out that information.
    97         I $D(^TMP(PXRMPID,$J,PXRMITEM,"zCDUE")) D
    98         . S TEMP=^TMP(PXRMPID,$J,PXRMITEM,"zCDUE")
    99         . S TEXT=$$OUTPUT^PXRMCDUE(TEMP,.DEFARR)
    100         . I DEFARR(31)["AGE" D
    101         .. S TEMP=$G(^TMP(PXRMPID,$J,PXRMITEM,"zFREQARNG"))
    102         .. I TEMP'="" S TEXT=TEXT_" Applicable"_$$FMTAGE^PXRMAGE($P(TEMP,U,2),$P(TEMP,U,3))_"."
    103         . D ADDTXT^PXRMOUTU(1,PXRMRM,.NTXT,TEXT)
    104         E  D
    105         . S TEMP=$G(^TMP(PXRMPID,$J,PXRMITEM,"zFREQARNG"))
    106         . I TEMP'="" D
    107         .. S FREQ=$P(TEMP,U,1)
    108         .. S TEXT=$$FMTFREQ^PXRMAGE(FREQ)
    109         .. I FREQ=-1 S TEXT=TEXT_" for this patient."
    110         .. I DEFARR(31)["AGE",FREQ'=-1 S TEXT=TEXT_$$FMTAGE^PXRMAGE($P(TEMP,U,2),$P(TEMP,U,3))_"."
    111         .. D ADDTXT^PXRMOUTU(1,PXRMRM,.NTXT,TEXT)
    112         Q
    113         ;
    114         ;================================================
    115 HEADER(FTYPE,NLINES,RESDATE,NHDR,HDR)   ;Create a finding header.
    116         I FTYPE="RES" D  Q
    117         . I +RESDATE'=0 D  Q
    118         .. S HDR(2)="Resolution: Last done "_$$EDATE^PXRMDATE(RESDATE)
    119         .. S NHDR=2
    120         .. S HDR(1)="\\"
    121         . I '$D(HDR(2)),NLINES>0 D
    122         .. S HDR(2)="Resolution:"
    123         .. S NHDR=2
    124         .. S HDR(1)="\\"
    125         ;
    126         I NLINES=0 Q
    127         I FTYPE="PCL" D  Q
    128         . S NHDR=2
    129         . S HDR(1)="\\"
    130         . S HDR(2)="Cohort:"
    131         ;
    132         I FTYPE="AGE" D  Q
    133         . S NHDR=2
    134         . S HDR(1)="\\"
    135         . S HDR(2)="Age/Frequency:"
    136         ;
    137         I FTYPE="INFO" D  Q
    138         . S NHDR=2
    139         . S HDR(1)="\\"
    140         . S HDR(2)="Information:"
    141         Q
    142         ;
     1PXRMOUTC ; SLC/PKR - Clinical Maintenance output. ;10/07/2005
     2 ;;2.0;CLINICAL REMINDERS;**4**;Feb 04, 2005;Build 21
     3 ;================================================
     4CM(DEFARR,PXRMPDEM,PCLOGIC,RESLOGIC,RESDATE,FIEVAL) ;Prepare the
     5 ;clinical maintenance output.
     6 N IND,FIDATA,FINDING,FLIST,FTYPE
     7 N HDR,NHDR,IFIEVAL,LIST,NFLINES,NTXT,NUM
     8 N TEMP,TEXT
     9 S NTXT=0
     10 ;Check for a dead patient
     11 I +$G(PXRMPDEM("DOD"))>0 D
     12 . S TEMP=$$FMTE^XLFDT(PXRMPDEM("DOD"),"5DZ")
     13 . S TEXT="Patient is deceased, date of death: "_TEMP
     14 . D ADDTXT^PXRMOUTU(1,PXRMRM,.NTXT,TEXT)
     15 ;Display the frequency information only if there is resolution logic.
     16 I RESLOGIC'="" D FREQ(.DEFARR,.NTXT,.TEXT)
     17 ;Output the AGE match/no match text.
     18 D AGE^PXRMFNFT(PXRMPDEM("DFN"),.DEFARR,.FIEVAL,.NTXT)
     19 ;Process the findings in the order: patient cohort, resolution,
     20 ;age, and informational.
     21 M FIDATA=FIEVAL
     22 F FTYPE="PCL","RES","AGE","INFO" D
     23 . S LIST=$S(FTYPE="PCL":DEFARR(32),FTYPE="RES":DEFARR(36),FTYPE="AGE":DEFARR(40),FTYPE="INFO":DEFARR(42))
     24 .;Output the general logic text.
     25 . I FTYPE="PCL" D LOGIC^PXRMFNFT(PXRMPDEM("DFN"),PCLOGIC,FTYPE,"D",.DEFARR,.NTXT)
     26 . I FTYPE="RES",$P(PCLOGIC,U,1) D LOGIC^PXRMFNFT(PXRMPDEM("DFN"),RESLOGIC,FTYPE,"D",.DEFARR,.NTXT)
     27 .;Process the findings for each type.
     28 . K TEXT
     29 . S (NHDR,NFLINES)=0
     30 . S NUM=+$P(LIST,U,1)
     31 . S FLIST=$P(LIST,U,2)
     32 . F IND=1:1:NUM D
     33 .. S FINDING=$P(FLIST,";",IND)
     34 ..;No output for age or sex findings.
     35 .. I (FINDING="AGE")!(FINDING="SEX") Q
     36 ..;Make sure each finding is processed only once.
     37 .. I '$D(FIDATA(FINDING)) Q
     38 .. K IFIEVAL
     39 .. I FIEVAL(FINDING) M IFIEVAL=FIEVAL(FINDING)
     40 .. E  S IFIEVAL=0
     41 ..;If the finding is false all we need to do is process the not found
     42 ..;text. If it is true we also need to output the finding information.
     43 .. I IFIEVAL D FOUT(1,.IFIEVAL,.NFLINES,.TEXT)
     44 ..;Output the found/not found text for the finding.
     45FNF .. D FINDING^PXRMFNFT(3,PXRMPDEM("DFN"),FINDING,.IFIEVAL,.NFLINES,.TEXT)
     46 ..;Make sure each finding is processed only once.
     47 .. K FIDATA(FINDING)
     48 .;
     49 .;If there was any text for this finding type create a header.
     50 . D HEADER(FTYPE,NFLINES,RESDATE,.NHDR,.HDR)
     51 .;Output the header and the finding text.
     52 . D ADDTXTA^PXRMOUTU(1,PXRMRM,.NTXT,NHDR,.HDR)
     53 . D COPYTXT^PXRMOUTU(.NTXT,NFLINES,.TEXT)
     54 ;Output INFO nodes
     55 D INFO^PXRMOUTU(PXRMITEM,.NTXT)
     56 Q
     57 ;
     58 ;================================================
     59FOUT(INDENT,IFIEVAL,NLINES,TEXT) ;Do output for individual findings
     60 ;in the FINDING array.
     61 I $D(IFIEVAL("TERM")) D OUTPUT^PXRMTERM(1,.IFIEVAL,.NFLINES,.TEXT) Q
     62 N FTYPE
     63 S FTYPE=$P(IFIEVAL("FINDING"),U,1)
     64 S FTYPE=$P(FTYPE,";",2)
     65 I FTYPE="AUTTEDT(" D OUTPUT^PXRMEDU(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
     66 I FTYPE="AUTTEXAM(" D OUTPUT^PXRMEXAM(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
     67 I FTYPE="AUTTHF(" D OUTPUT^PXRMHF(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
     68 I FTYPE="AUTTIMM(" D OUTPUT^PXRMIMM(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
     69 I FTYPE="AUTTSK(" D OUTPUT^PXRMSKIN(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
     70 I FTYPE="GMRD(120.51," D OUTPUT^PXRMVITL(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
     71 I FTYPE="LAB(60," D OUTPUT^PXRMLAB(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
     72 I FTYPE="ORD(101.43," D OUTPUT^PXRMORDR(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
     73 I FTYPE="PS(50.605," D OUTPUT^PXRMDRCL(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
     74 I FTYPE="PSDRUG(" D OUTPUT^PXRMDRUG(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
     75 I FTYPE="PSNDF(50.6," D OUTPUT^PXRMDGEN(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
     76 I FTYPE="PS(55," D OUTPUT^PXRMDIN(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
     77 I FTYPE="PS(55NVA," D OUTPUT^PXRMDNVA(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
     78 I FTYPE="PSRX(" D OUTPUT^PXRMDOUT(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
     79 I FTYPE="PXD(811.2," D OUTPUT^PXRMTAX(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
     80 I FTYPE="PXRMD(802.4," D OUTPUT^PXRMFF(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
     81 I FTYPE="PXRMD(810.9," D OUTPUT^PXRMLOCF(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
     82 I FTYPE="PXRMD(811.4," D OUTPUT^PXRMCF(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
     83 I FTYPE="RAMIS(71," D OUTPUT^PXRMRAD(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
     84 I FTYPE="YTT(601," D OUTPUT^PXRMMH(INDENT,.IFIEVAL,.NLINES,.TEXT) Q
     85 Q
     86 ;
     87 ;================================================
     88FREQ(DEFARR,NTXT,TEXT) ;Display the frequency information.
     89 N FREQ,TEMP
     90 ;If there was a custom date due print out that information.
     91 I $D(^TMP(PXRMPID,$J,PXRMITEM,"zCDUE")) D
     92 . S TEMP=^TMP(PXRMPID,$J,PXRMITEM,"zCDUE")
     93 . S TEXT=$$OUTPUT^PXRMCDUE(TEMP,.DEFARR)
     94 . I DEFARR(31)["AGE" D
     95 .. S TEMP=$G(^TMP(PXRMPID,$J,PXRMITEM,"zFREQARNG"))
     96 .. I TEMP'="" S TEXT=TEXT_" Applicable"_$$FMTAGE^PXRMAGE($P(TEMP,U,2),$P(TEMP,U,3))_"."
     97 . D ADDTXT^PXRMOUTU(1,PXRMRM,.NTXT,TEXT)
     98 E  D
     99 . S TEMP=$G(^TMP(PXRMPID,$J,PXRMITEM,"zFREQARNG"))
     100 . I TEMP'="" D
     101 .. S FREQ=$P(TEMP,U,1)
     102 .. S TEXT=$$FMTFREQ^PXRMAGE(FREQ)
     103 .. I FREQ=-1 S TEXT=TEXT_" for this patient."
     104 .. I DEFARR(31)["AGE",FREQ'=-1 S TEXT=TEXT_$$FMTAGE^PXRMAGE($P(TEMP,U,2),$P(TEMP,U,3))_"."
     105 .. D ADDTXT^PXRMOUTU(1,PXRMRM,.NTXT,TEXT)
     106 Q
     107 ;
     108 ;================================================
     109HEADER(FTYPE,NLINES,RESDATE,NHDR,HDR) ;Create a finding header.
     110 I FTYPE="RES" D  Q
     111 . I +RESDATE'=0 D  Q
     112 .. S HDR(2)="Resolution: Last done "_$$EDATE^PXRMDATE(RESDATE)
     113 .. S NHDR=2
     114 .. S HDR(1)="\\"
     115 . I '$D(HDR(2)),NLINES>0 D
     116 .. S HDR(2)="Resolution:"
     117 .. S NHDR=2
     118 .. S HDR(1)="\\"
     119 ;
     120 I NLINES=0 Q
     121 I FTYPE="PCL" D  Q
     122 . S NHDR=2
     123 . S HDR(1)="\\"
     124 . S HDR(2)="Cohort:"
     125 ;
     126 I FTYPE="AGE" D  Q
     127 . S NHDR=2
     128 . S HDR(1)="\\"
     129 . S HDR(2)="Age/Frequency:"
     130 ;
     131 I FTYPE="INFO" D  Q
     132 . S NHDR=2
     133 . S HDR(1)="\\"
     134 . S HDR(2)="Information:"
     135 Q
     136 ;
Note: See TracChangeset for help on using the changeset viewer.