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/ORDER_ENTRY_RESULTS_REPORTING-OR-OCX--ORRC--ORRJ/ORDV04A.m

    r613 r623  
    1 ORDV04A ; SLC/DAN/dcm - OE/RR ;7/30/01  14:33
    2         ;;3.0;ORDER ENTRY/RESULTS REPORTING;**109,243**;Dec 17,1997;Build 242
    3         ;
    4         Q
    5 ENSR    ; Entry point for component
    6         ;External calls to ^GMTSROB, ^DIQ, ^GMTSORC, ^DIWP
    7         ;External references to ^SRF, ^DD, ^ICPT
    8         N GMIDT,GMN,SURG
    9         I '$D(^SRF("B",DFN)) Q
    10         S GMN=0 F  S GMN=$O(^SRF("B",DFN,GMN)) Q:GMN'>0  D SORT
    11         I '$D(SURG) Q
    12         S GMIDT=0 F  S GMIDT=$O(SURG(GMIDT)) Q:GMIDT'>0!(ORCNT'<ORMAX)  S GMN=SURG(GMIDT) D EXTRCT
    13         Q
    14         ;
    15 SORT    ; Sort surgeries by inverted date
    16         N GMDT
    17         S GMDT=$P(^SRF(GMN,0),U,9) I GMDT>ORDBEG&(GMDT<ORDEND) D
    18         . F  Q:'$D(SURG(9999999-GMDT))  S GMDT=GMDT+.0001
    19         . S SURG(9999999-GMDT)=GMN
    20         Q
    21 EXTRCT  ; Extract surgical case record
    22         N X,GMI,GMDT,OPPRC,POSDX,PREDX,SPEC,STATUS,SURGEON,VER
    23         N DCTDTM,TRSDTM,Y,C,DIWL,DIWF,ORSITE,ORMORE,SITE
    24         S ORCNT=ORCNT+1,ORMORE=0
    25         S GMDT=$$DATE^ORDVU($P(^SRF(GMN,0),U,9))
    26         D STATUS^GMTSROB S:'$D(STATUS) STATUS="UNKNOWN"
    27         S X=$P(^SRF(GMN,0),U,4) I X>0 S Y=X,C=$P(^DD(130,.04,0),U,2) D Y^DIQ S SPEC=Y K Y
    28         I $D(^SRF(GMN,.1)) S X=$P(^SRF(GMN,.1),U,4) I X>0 S Y=X,C=$P(^DD(130,.14,0),U,2) D Y^DIQ S SURGEON=Y K Y
    29         S VER=$S($G(^SRF(GMN,"VER"))'="Y":"(Unverified)",1:"")
    30         S PREDX(0)=$S($G(^SRF(GMN,33))]"":$P(^(33),U),1:"") S GMI=0 F  S GMI=$O(^SRF(GMN,14,GMI)) Q:GMI'>0  S PREDX(GMI)=$P(^SRF(GMN,14,GMI,0),U)
    31         S POSDX(0)=$S($G(^SRF(GMN,34))]"":$P(^(34),U),1:"") S GMI=0 F  S GMI=$O(^SRF(GMN,15,GMI)) Q:GMI'>0  S POSDX(GMI)=$P(^SRF(GMN,15,GMI,0),U)
    32         S OPPRC(0)=$P($G(^SRF(GMN,"OP")),U,1,2) S:$P(OPPRC(0),U,2)]"" $P(OPPRC(0),U,2)=$P($$CPT^ICPTCOD($P($G(^SRF(GMN,"OP")),U,2)),U,3) D
    33         . S GMI=0 F  S GMI=$O(^SRF(GMN,13,GMI)) Q:GMI'>0  S OPPRC(GMI)=$P($G(^SRF(GMN,13,GMI,0)),U)_U_$G(^SRF(GMN,13,GMI,2)) S:$P(OPPRC(GMI),U,2)]"" $P(OPPRC(GMI),U,2)=$P($$CPT^ICPTCOD($P($G(^SRF(GMN,13,GMI,2)),U)),U,3)
    34         S X=$P($G(^SRF(GMN,31)),U,6) S:X>0 DCTDTM=$$DATE^ORDVU(X)
    35         S X=$P($G(^SRF(GMN,31)),U,7) S:X>0 TRSDTM=$$DATE^ORDVU(X)
    36         S DIWL=0,DIWF="N",ORSITE=$$SITE^VASITE,ORSITE=$P(ORSITE,"^",2)_";"_$P(ORSITE,"^",3)
    37         K ^UTILITY($J,"W")
    38         I $D(^SRF(GMN,12)) F GMI=1:1:$P(^SRF(GMN,12,0),U,4) S X=^SRF(GMN,12,GMI,0) D ^DIWP
    39         S SITE=ORSITE
    40         S ^TMP("ORDATA",$J,GMIDT,"WP",1)="1^"_SITE ;Station ID
    41         S ^TMP("ORDATA",$J,GMIDT,"WP",2)="2^"_GMDT ; date
    42         ;
    43         ; Operative Procedure(s)
    44         S GMI="" F  S GMI=$O(OPPRC(GMI)) Q:GMI=""  D  S:GMI ORMORE=1
    45         . S ^TMP("ORDATA",$J,GMIDT,"WP",3,GMI)="3^"_$P(OPPRC(GMI),U)_$S($P(OPPRC(GMI),U,2)]"":" - "_$P(OPPRC(GMI),U,2),1:"")
    46         ;
    47         S ^TMP("ORDATA",$J,GMIDT,"WP",4)="4^"_$G(SPEC) ;surgical specialty
    48         ;
    49         S ^TMP("ORDATA",$J,GMIDT,"WP",5)="5^"_$G(SURGEON) ; surgeon
    50         S ^TMP("ORDATA",$J,GMIDT,"WP",6)="6^"_$G(STATUS) ; op status
    51         ;
    52         ; Pre-operative diagnosis
    53         S GMI="" F  S GMI=$O(PREDX(GMI)) Q:GMI=""  D  S:GMI ORMORE=1
    54         . S ^TMP("ORDATA",$J,GMIDT,"WP",7,GMI)="7^"_PREDX(GMI)
    55         ;
    56         ; Post-operative diagnosis
    57         S GMI="" F  S GMI=$O(POSDX(GMI)) Q:GMI=""  D  S:GMI ORMORE=1
    58         . S ^TMP("ORDATA",$J,GMIDT,"WP",8,GMI)="8^"_POSDX(GMI)
    59         ;
    60         ; Lab work? Y/N
    61         S ^TMP("ORDATA",$J,GMIDT,"WP",9)="9^"_$S($O(^SRF(GMN,9,0)):"Yes",1:"No")
    62         S ^TMP("ORDATA",$J,GMIDT,"WP",10)="10^"_$G(DCTDTM) ; dictation time
    63         S ^TMP("ORDATA",$J,GMIDT,"WP",11)="11^"_$G(TRSDTM) ; transcription time
    64         ;
    65         ; surgeon's dictation
    66         I $D(^UTILITY($J,"W")) D  S ORMORE=1
    67         . K ^TMP("ORHSSRT",$J)
    68         . F GMI=1:1:^UTILITY($J,"W",DIWL) D
    69         .. S ^TMP("ORHSSRT",$J,GMIDT,"WP",GMI)=^UTILITY($J,"W",DIWL,GMI,0)
    70         . D SPMRG^ORDVU($NA(^TMP("ORHSSRT",$J,GMIDT,"WP")),$NA(^TMP("ORDATA",$J,GMIDT,"WP",12)),12)
    71         . K ^UTILITY($J,"W")
    72         . K ^TMP("ORHSSRT",$J)
    73         I ORMORE S ^TMP("ORDATA",$J,GMIDT,"WP",13)="13^[+]" ;flag for detail
    74         Q
    75 VS      ;Continuation of Vitals Extract (from ORDV04)
    76         ;Calls GMRVUT0
    77         I $L($T(GCPR^OMGCOAS1)) D  Q  ; OMGCOAS1 routine only on Station 200
    78         . D GCPR^OMGCOAS1(DFN,"VIT",ORDBEG,ORDEND,ORMAX)
    79         . S ROOT=$NA(^TMP("ORDATA",$J))
    80         N ORDT,I,TYPE,IEN,GMRVSTR,ORSITE,SITE,PLACE,GO,X,QUALIF,NODE,UNITS,UCNT,QCNT,ORI
    81         Q:'$L(OREXT)
    82         S GO=$P(OREXT,";")_"^"_$P(OREXT,";",2)
    83         Q:'$L($T(@GO))
    84         K ^UTILITY($J,"GMRVD"),^TMP("ORDATA",$J)
    85         S GMRVSTR="T;P;R;BP;HT;WT;PN;PO2;CVP;CG",GMRVSTR(0)=ORDBEG_"^"_ORDEND_"^"_ORMAX_"^"_1
    86         S ORSITE=$$SITE^VASITE,ORSITE=$P(ORSITE,"^",2)_";"_$P(ORSITE,"^",3)
    87         D @GO
    88         S ORDT=0
    89         F I=1:1 S ORDT=$O(^UTILITY($J,"GMRVD",ORDT)) Q:'+ORDT!(I>ORMAX)  D  ;DBIA 4791
    90         . S SITE=$S($L($G(^TMP("GMRVD",$J,ORDT,"facility"))):^("facility"),1:ORSITE)
    91         . S ^TMP("ORDATA",$J,"WP",ORDT,1)="1^"_SITE
    92         . S ^TMP("ORDATA",$J,"WP",ORDT,2)="2^"_$$DATE^ORDVU(9999999-ORDT) ;date vitals taken
    93         . K UNITS,QUALIF
    94         . S TYPE="",(UCNT,QCNT)=1,UNITS(UCNT)="",QUALIF(QCNT)="",QUALIF=""
    95         . F  S TYPE=$O(^UTILITY($J,"GMRVD",ORDT,TYPE)) Q:TYPE=""  D
    96         .. S IEN=$O(^UTILITY($J,"GMRVD",ORDT,TYPE,0)) Q:'IEN  S NODE=$G(^(IEN))
    97         .. S PLACE=$S(TYPE="T":3,TYPE="P":4,TYPE="R":5,TYPE="BP":6,TYPE="HT":7,TYPE="WT":8,TYPE="PN":9,TYPE="PO2":10,TYPE="CVP":11,TYPE="CG":12,1:0)
    98         .. I PLACE S ^TMP("ORDATA",$J,"WP",ORDT,PLACE)=PLACE_"^"_$P(NODE,"^",8) ;Get value of vitals from global
    99         .. S X=$$UNITMAP(TYPE) S:$L(UNITS(UCNT))>60 UCNT=UCNT+1,UNITS(UCNT)="" S UNITS(UCNT)=$S($L(UNITS(UCNT)):UNITS(UCNT)_","_$$MAP(TYPE)_":",1:$$MAP(TYPE)_":")_X ;Units
    100         .. I TYPE="PO2" D
    101         ... I $L($P(NODE,"^",15)) S ^TMP("ORDATA",$J,"WP",ORDT,13)=13_"^"_$P($G(^UTILITY($J,"GMRVD",ORDT,TYPE,IEN)),"^",15) ; Flow Rate
    102         ... I $L($P(NODE,"^",16)) S ^TMP("ORDATA",$J,"WP",ORDT,14)=14_"^"_$P($G(^UTILITY($J,"GMRVD",ORDT,TYPE,IEN)),"^",16) ; O2 Concentration
    103         .. I $L($P(NODE,"^",17)) S X=$P(NODE,"^",17)  D
    104         ... I QUALIF'[($$MAP(TYPE)_":"_X) D
    105         .... S QUALIF=$S($L(QUALIF):QUALIF_" , "_$$MAP(TYPE)_":",1:$$MAP(TYPE)_":")_X ; Qualifier
    106         .... S:$L(QUALIF(QCNT))>60 QCNT=QCNT+1,QUALIF(QCNT)=""
    107         .... S QUALIF(QCNT)=$S($L(QUALIF(QCNT)):QUALIF(QCNT)_" , "_$$MAP(TYPE)_":",1:$$MAP(TYPE)_":")_X ; Qualifier
    108         .. I TYPE="WT",$L($P(NODE,"^",14)) D
    109         ... S ^TMP("ORDATA",$J,"WP",ORDT,16)=16_"^"_$P(NODE,"^",14) ; BMI
    110         . I $O(QUALIF(0)) D
    111         .. S ORI=0 F  S ORI=$O(QUALIF(ORI)) Q:'ORI  D
    112         ... S ^TMP("ORDATA",$J,"WP",ORDT,15,ORI)="15^"_QUALIF(ORI)
    113         . I $O(UNITS(0)) D
    114         .. S ORI=0 F  S ORI=$O(UNITS(ORI)) Q:'ORI  D
    115         ... S ^TMP("ORDATA",$J,"WP",ORDT,17,ORI)="17^"_UNITS(ORI)
    116         K ^UTILITY($J,"GMRVD")
    117         S ROOT=$NA(^TMP("ORDATA",$J))
    118         Q
    119 MAP(TEXT)       ;Map test code to abbreviation
    120         Q:'$L($G(TEXT)) ""
    121         I TEXT="T" Q "TEMP"
    122         I TEXT="P" Q "PULSE"
    123         I TEXT="R" Q "RESP"
    124         I TEXT="BP" Q "BP"
    125         I TEXT="HT" Q "HT"
    126         I TEXT="WT" Q "WT"
    127         I TEXT="PN" Q "PAIN"
    128         I TEXT="PO2" Q "POx"
    129         I TEXT="CVP" Q "CVP"
    130         I TEXT="CG" Q "C/G"
    131         Q TEXT
    132 UNITMAP(TEXT)   ;Map units to abbreviation
    133         Q:'$L($G(TEXT)) ""
    134         I TEXT="T" Q "F"
    135         I TEXT="P" Q "/min"
    136         I TEXT="R" Q " /min"
    137         I TEXT="BP" Q "mmHg"
    138         I TEXT="HT" Q "in"
    139         I TEXT="WT" Q "lb"
    140         I TEXT="PN" Q ""
    141         I TEXT="PO2" Q "%SpO2"
    142         I TEXT="CVP" Q "cmH2O"
    143         I TEXT="CG" Q " in"
    144         Q ""
     1ORDV04A ;SLC/DAN - OE/RR ;7/30/01  14:33
     2 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**109**;Dec 17,1997
     3 ;
     4 Q
     5ENSR ; Entry point for component
     6 ;External calls to ^GMTSROB, ^DIQ, ^GMTSORC, ^DIWP
     7 ;External references to ^SRF, ^DD, ^ICPT
     8 N GMIDT,GMN,SURG
     9 I '$D(^SRF("B",DFN)) Q
     10 S GMN=0 F  S GMN=$O(^SRF("B",DFN,GMN)) Q:GMN'>0  D SORT
     11 I '$D(SURG) Q
     12 S GMIDT=0 F  S GMIDT=$O(SURG(GMIDT)) Q:GMIDT'>0!(ORCNT'<ORMAX)  S GMN=SURG(GMIDT) D EXTRCT
     13 Q
     14 ;
     15SORT ; Sort surgeries by inverted date
     16 N GMDT
     17 S GMDT=$P(^SRF(GMN,0),U,9) I GMDT>ORDBEG&(GMDT<ORDEND) D
     18 . F  Q:'$D(SURG(9999999-GMDT))  S GMDT=GMDT+.0001
     19 . S SURG(9999999-GMDT)=GMN
     20 Q
     21EXTRCT ; Extract surgical case record
     22 N X,GMI,GMDT,OPPRC,POSDX,PREDX,SPEC,STATUS,SURGEON,VER
     23 N DCTDTM,TRSDTM,Y,C,DIWL,DIWF,ORSITE,ORMORE,SITE
     24 S ORCNT=ORCNT+1,ORMORE=0
     25 S GMDT=$$DATE^ORDVU($P(^SRF(GMN,0),U,9))
     26 D STATUS^GMTSROB S:'$D(STATUS) STATUS="UNKNOWN"
     27 S X=$P(^SRF(GMN,0),U,4) I X>0 S Y=X,C=$P(^DD(130,.04,0),U,2) D Y^DIQ S SPEC=Y K Y
     28 I $D(^SRF(GMN,.1)) S X=$P(^SRF(GMN,.1),U,4) I X>0 S Y=X,C=$P(^DD(130,.14,0),U,2) D Y^DIQ S SURGEON=Y K Y
     29 S VER=$S($G(^SRF(GMN,"VER"))'="Y":"(Unverified)",1:"")
     30 S PREDX(0)=$S($G(^SRF(GMN,33))]"":$P(^(33),U),1:"") S GMI=0 F  S GMI=$O(^SRF(GMN,14,GMI)) Q:GMI'>0  S PREDX(GMI)=$P(^SRF(GMN,14,GMI,0),U)
     31 S POSDX(0)=$S($G(^SRF(GMN,34))]"":$P(^(34),U),1:"") S GMI=0 F  S GMI=$O(^SRF(GMN,15,GMI)) Q:GMI'>0  S POSDX(GMI)=$P(^SRF(GMN,15,GMI,0),U)
     32 S OPPRC(0)=$P($G(^SRF(GMN,"OP")),U,1,2) S:$P(OPPRC(0),U,2)]"" $P(OPPRC(0),U,2)=$P($$CPT^ICPTCOD($P($G(^SRF(GMN,"OP")),U,2)),U,3) D
     33 . S GMI=0 F  S GMI=$O(^SRF(GMN,13,GMI)) Q:GMI'>0  S OPPRC(GMI)=$P($G(^SRF(GMN,13,GMI,0)),U)_U_$G(^SRF(GMN,13,GMI,2)) S:$P(OPPRC(GMI),U,2)]"" $P(OPPRC(GMI),U,2)=$P($$CPT^ICPTCOD($P($G(^SRF(GMN,13,GMI,2)),U)),U,3)
     34 S X=$P($G(^SRF(GMN,31)),U,6) S:X>0 DCTDTM=$$DATE^ORDVU(X)
     35 S X=$P($G(^SRF(GMN,31)),U,7) S:X>0 TRSDTM=$$DATE^ORDVU(X)
     36 S DIWL=0,DIWF="N",ORSITE=$$SITE^VASITE,ORSITE=$P(ORSITE,"^",2)_";"_$P(ORSITE,"^",3)
     37 K ^UTILITY($J,"W")
     38 I $D(^SRF(GMN,12)) F GMI=1:1:$P(^SRF(GMN,12,0),U,4) S X=^SRF(GMN,12,GMI,0) D ^DIWP
     39 S SITE=ORSITE
     40 S ^TMP("ORDATA",$J,GMIDT,"WP",1)="1^"_SITE ;Station ID
     41 S ^TMP("ORDATA",$J,GMIDT,"WP",2)="2^"_GMDT ; date
     42 ;
     43 ; Operative Procedure(s)
     44 S GMI="" F  S GMI=$O(OPPRC(GMI)) Q:GMI=""  D  S:GMI ORMORE=1
     45 . S ^TMP("ORDATA",$J,GMIDT,"WP",3,GMI)="3^"_$P(OPPRC(GMI),U)_$S($P(OPPRC(GMI),U,2)]"":" - "_$P(OPPRC(GMI),U,2),1:"")
     46 ;
     47 S ^TMP("ORDATA",$J,GMIDT,"WP",4)="4^"_$G(SPEC) ;surgical specialty
     48 ;
     49 S ^TMP("ORDATA",$J,GMIDT,"WP",5)="5^"_$G(SURGEON) ; surgeon
     50 S ^TMP("ORDATA",$J,GMIDT,"WP",6)="6^"_$G(STATUS) ; op status
     51 ;
     52 ; Pre-operative diagnosis
     53 S GMI="" F  S GMI=$O(PREDX(GMI)) Q:GMI=""  D  S:GMI ORMORE=1
     54 . S ^TMP("ORDATA",$J,GMIDT,"WP",7,GMI)="7^"_PREDX(GMI)
     55 ;
     56 ; Post-operative diagnosis
     57 S GMI="" F  S GMI=$O(POSDX(GMI)) Q:GMI=""  D  S:GMI ORMORE=1
     58 . S ^TMP("ORDATA",$J,GMIDT,"WP",8,GMI)="8^"_POSDX(GMI)
     59 ;
     60 ; Lab work? Y/N
     61 S ^TMP("ORDATA",$J,GMIDT,"WP",9)="9^"_$S($O(^SRF(GMN,9,0)):"Yes",1:"No")
     62 S ^TMP("ORDATA",$J,GMIDT,"WP",10)="10^"_$G(DCTDTM) ; dictation time
     63 S ^TMP("ORDATA",$J,GMIDT,"WP",11)="11^"_$G(TRSDTM) ; transcription time
     64 ;
     65 ; surgeon's dictation
     66 I $D(^UTILITY($J,"W")) D  S ORMORE=1
     67 . K ^TMP("ORHSSRT",$J)
     68 . F GMI=1:1:^UTILITY($J,"W",DIWL) D
     69 .. S ^TMP("ORHSSRT",$J,GMIDT,"WP",GMI)=^UTILITY($J,"W",DIWL,GMI,0)
     70 . D SPMRG^ORDVU($NA(^TMP("ORHSSRT",$J,GMIDT,"WP")),$NA(^TMP("ORDATA",$J,GMIDT,"WP",12)),12)
     71 . K ^UTILITY($J,"W")
     72 . K ^TMP("ORHSSRT",$J)
     73 I ORMORE S ^TMP("ORDATA",$J,GMIDT,"WP",13)="13^[+]" ;flag for detail
     74 Q
Note: See TracChangeset for help on using the changeset viewer.