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/ORWGAPIX.m

    r613 r623  
    1 ORWGAPIX        ; SLC/STAFF - Graph External Calls ;9/29/06  11:49
    2         ;;3.0;ORDER ENTRY/RESULTS REPORTING;**215,260,243**;Dec 17, 1997;Build 242
    3         ;
    4 DATE(X) ; $$(date/time) -> date/time
    5         N Y D ^%DT
    6         Q Y
    7 ENDIQ1(RESULTS,DIC,DR,DA,DIQ)   ; use file # for DIC
    8         N NUMDIC K RESULTS,^UTILITY("DIQ1",$J)
    9         Q:'$G(DIC)  Q:'$L(DR)  Q:'$G(DA)
    10         S NUMDIC=DIC
    11         D EN^DIQ1
    12         M RESULTS=^UTILITY("DIQ1",$J,NUMDIC,DA)
    13         K ^UTILITY("DIQ1",$J)
    14         Q
    15 EXT(Y,FILE,FIELD)       ; $$(value,file,field) -> external value
    16         N C S C=$P($G(^DD(FILE,FIELD,0)),U,2) D Y^DIQ
    17         Q Y
    18 EXTERNAL(FILE,FIELD,FLAG,VAL)   ; $$(file,field,flag,internal value) -> external value
    19         Q $$EXTERNAL^DILFD(FILE,FIELD,FLAG,VAL)
    20 EXTNAME(IEN,FN) ; $$(ien,file#) -> external form of pointer
    21         N REF
    22         S REF=$G(^DIC(FN,0,"GL"))
    23         I $L(REF),+IEN Q $P($G(@(REF_IEN_",0)")),U)
    24         Q ""
    25 FILENM(FILENUM) ; $$(file#) -> file name
    26         N DIC,DO,NAME K DIC,DO
    27         S FILENUM=$$GBLREF(+$G(FILENUM))
    28         I '$L($G(FILENUM)) Q ""
    29         S DIC=FILENUM
    30         D DO^DIC1
    31         S NAME=$P(DO,U)
    32         Q NAME
    33 GETDATA(RESULTS,DIC,DR,DA,DIQ)  ; use file # for DIC
    34         N NUMDIC K RESULTS,^UTILITY("DIQ1",$J)
    35         Q:'$G(DIC)  Q:'$L(DR)  Q:'$G(DA)
    36         S NUMDIC=DIC
    37         D EN^DIQ1
    38         M RESULTS=^UTILITY("DIQ1",$J,NUMDIC,DA)
    39         K ^UTILITY("DIQ1",$J)
    40         Q
    41 GBLREF(FILENUM) ; $$(file#) -> global reference
    42         I '$G(FILENUM) Q ""
    43         Q $$ROOT^DILFD(+FILENUM)
    44 INDEX(DIK,DA)   ; index entry in file   -  from ORWGAPIP
    45         D IX1^DIK
    46         Q
    47 XDEL(ENTITY,PARAM,NAME,ORERR)   ; from ORWGAPIP
    48         D DEL^XPAR(ENTITY,PARAM,NAME,.ORERR)
    49         Q
    50 XEN(ENTITY,PARAM,NAME,ORVAL,ORERR)      ; from ORWGAPIP
    51         D EN^XPAR(ENTITY,PARAM,NAME,.ORVAL,.ORERR)
    52         Q
    53 XENVAL(ORVALUES,PARAM)  ;
    54         D ENVAL^XPAR(.ORVALUES,PARAM)
    55         Q
    56 XGET(ENTITY,PARAM,INST,FORMAT)  ; $$(...) -> parameter values
    57         Q $$GET^XPAR(ENTITY,PARAM,INST,FORMAT)
    58 XGETLST(ORLIST,ENTITY,PARAM)    ; from ORWGAPIP
    59         D GETLST^XPAR(.ORLIST,ENTITY,PARAM)
    60         Q
    61 XGETLST1(ORLIST,ENTITY,PARAM,FORMAT,ORERR)      ; from ORWGAPIP
    62         D GETLST^XPAR(.ORLIST,ENTITY,PARAM,FORMAT,.ORERR)
    63         Q
    64 XGETWP(ORWP,ENTITY,PARAM,ALL)   ; from ORWGAPIP
    65         D GETWP^XPAR(.ORWP,ENTITY,PARAM,ALL)
    66         Q
    67         ; kernel functions
    68 FMADD(X,D,H,M,S)        ;
    69         Q $$FMADD^XLFDT(X,$G(D),$G(H),$G(M),$G(S))
    70 NOW()   ;
    71         Q $$NOW^XLFDT
    72 LOW(X)  ;
    73         Q $$LOW^XLFSTR(X)
    74 REPLACE(STRING,ORARRAY) ;
    75         Q $$REPLACE^XLFSTR(STRING,.ORARRAY)
    76 TRIM(X,F,V)     ;
    77         Q $$TRIM^XLFSTR(X,$G(F,"LR"),$G(V," "))
    78 UP(X)   ;
    79         Q $$UP^XLFSTR(X)
    80 BMIITEMS(ITEMS,CNT,TMP) ; from ORWGAPIR
    81         N BMI,NUM,REPLACE K REPLACE
    82         S REPLACE("WEIGHT")="BODY MASS INDEX"
    83         S BMI=""
    84         S NUM=0
    85         I 'TMP D
    86         . F  S NUM=$O(ITEMS(NUM)) Q:NUM<1  D
    87         .. I $P(ITEMS(NUM),U,2)=8 S $P(BMI,U)=1
    88         .. I $P(ITEMS(NUM),U,2)=9 S $P(BMI,U,2)=ITEMS(NUM)
    89         I TMP D
    90         . F  S NUM=$O(^TMP(ITEMS,$J,NUM)) Q:NUM<1  D
    91         .. I $P(^TMP(ITEMS,$J,NUM),U,2)=8 S $P(BMI,U)=1
    92         .. I $P(^TMP(ITEMS,$J,NUM),U,2)=9 S $P(BMI,U,2)=^TMP(ITEMS,$J,NUM)
    93         I BMI,$L(BMI)>3 D
    94         . S CNT=CNT+1
    95         . S RESULT=$P(BMI,U,2,99)
    96         . S RESULT=$$REPLACE^ORWGAPIX(RESULT,.REPLACE)
    97         . S $P(RESULT,U,2)=99999
    98         . D SETUP^ORWGAPIW(.ITEMS,RESULT,TMP,.CNT)
    99         Q
    100         ;
    101 BMIDATA(DATA,ITEM,START,DFN,CNT,TMP)    ; from ORWGAPI4
    102         N DATE,DATE2,NODE,RESULT,VALUE,W K VALUE
    103         S DATE="",DATE2="",CNT=$G(CNT)
    104         F  S DATE=$O(^PXRMINDX(120.5,"PI",DFN,9,DATE)) Q:DATE=""  D
    105         . I DATE>START Q
    106         . S NODE=""
    107         . F  S NODE=$O(^PXRMINDX(120.5,"PI",DFN,9,DATE,NODE)) Q:NODE=""  D
    108         .. D VITAL^ORWGAPIA(.VALUE,NODE) S WT=$P($G(VALUE(7)),U) I 'WT Q
    109         .. S BMI=$$BMI(DFN,WT,DATE) I 'BMI Q
    110         .. S RESULT=120.5_U_ITEM_U_DATE_U_DATE2_U_BMI
    111         .. D SETUP^ORWGAPIW(.DATA,RESULT,TMP,.CNT)
    112         Q
    113         ;
    114 BMI(DFN,WT,DATE)        ; $$(dfn,wt,date) -> bmi, else ""
    115         N HDATE,HT,NEXT,NODE,PREV
    116         I '$O(^PXRMINDX(120.5,"PI",DFN,8,0)) Q ""
    117         S NODE=$O(^PXRMINDX(120.5,"PI",DFN,8,DATE,""))
    118         I '$L(NODE) D
    119         . S NEXT=+$O(^PXRMINDX(120.5,"PI",DFN,8,DATE))
    120         . S PREV=+$O(^PXRMINDX(120.5,"PI",DFN,8,DATE),-1)
    121         . S NODE=$O(^PXRMINDX(120.5,"PI",DFN,8,$$CLOSEST(DATE,NEXT,PREV),""))
    122         I '$L(NODE) Q ""
    123         D VITAL^ORWGAPIA(.VALUE,NODE) S HT=$P($G(VALUE(7)),U) I 'HT Q ""
    124         Q $$CALCBMI(HT,WT)
    125         ;
    126 CALCBMI(HT,WT)  ; $$(ht,wt) -> bmi  uses (inches,lbs)
    127         S WT=WT/2.2 ;+$$WEIGHT^XLFMSMT(WT,"LB","KG")
    128         S HT=HT*2.54/100 ;+$$LENGTH^XLFMSMT(HT,"IN","M")
    129         Q $J(WT/(HT*HT),0,2)
    130         ;
    131 CLOSEST(DATE,NEXT,PREV) ;
    132         I $$FMDIFF^XLFDT(DATE,NEXT,2)>$$FMDIFF^XLFDT(DATE,PREV,2) Q PREV
    133         Q NEXT
    134         ;
    135 BMILAST(DFN,ARRAY,CNT)  ;
    136         N BMI,DATE,NUM,WT
    137         S (DATE,NUM,WT)=0
    138         F  S NUM=$O(ARRAY(NUM)) Q:NUM<1  D  Q:WT
    139         . I $P(ARRAY(NUM),U,2)'="WT" Q
    140         . S WT=+$P(ARRAY(NUM),U,3)
    141         . S DATE=$P(ARRAY(NUM),U,4)
    142         I 'WT Q
    143         I 'DATE Q
    144         S BMI=$$BMI(DFN,WT,DATE)
    145         I 'BMI Q
    146         S CNT=CNT+1
    147         S ARRAY(CNT)="-1^BMI^"_BMI_U_DATE_U_BMI_"^^"
    148         Q
    149         ;
    150 ZZ()    ; test use only - this code will be removed before v27 release
    151         N X,ZIP,ZZ
    152         S ZZ=$C(36)_$C(90)_$C(72)
    153         S ZIP="S X="_ZZ X ZIP
    154         Q X
     1ORWGAPIX ; SLC/STAFF - Graph External Calls ;9/29/06  11:49
     2 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**215,260**;Dec 17, 1997;Build 26
     3 ;
     4DATE(X) ; $$(date/time) -> date/time
     5 N Y D ^%DT
     6 Q Y
     7ENDIQ1(RESULTS,DIC,DR,DA,DIQ) ; use file # for DIC
     8 N NUMDIC K RESULTS,^UTILITY("DIQ1",$J)
     9 Q:'$G(DIC)  Q:'$L(DR)  Q:'$G(DA)
     10 S NUMDIC=DIC
     11 D EN^DIQ1
     12 M RESULTS=^UTILITY("DIQ1",$J,NUMDIC,DA)
     13 K ^UTILITY("DIQ1",$J)
     14 Q
     15EXT(Y,FILE,FIELD) ; $$(value,file,field) -> external value
     16 N C S C=$P($G(^DD(FILE,FIELD,0)),U,2) D Y^DIQ
     17 Q Y
     18EXTERNAL(FILE,FIELD,FLAG,VAL) ; $$(file,field,flag,internal value) -> external value
     19 Q $$EXTERNAL^DILFD(FILE,FIELD,FLAG,VAL)
     20EXTNAME(IEN,FN) ; $$(ien,file#) -> external form of pointer
     21 N REF
     22 S REF=$G(^DIC(FN,0,"GL"))
     23 I $L(REF),+IEN Q $P($G(@(REF_IEN_",0)")),U)
     24 Q ""
     25FILENM(FILENUM) ; $$(file#) -> file name
     26 N DIC,DO,NAME K DIC,DO
     27 S FILENUM=$$GBLREF(+$G(FILENUM))
     28 I '$L($G(FILENUM)) Q ""
     29 S DIC=FILENUM
     30 D DO^DIC1
     31 S NAME=$P(DO,U)
     32 Q NAME
     33GETDATA(RESULTS,DIC,DR,DA,DIQ) ; use file # for DIC
     34 N NUMDIC K RESULTS,^UTILITY("DIQ1",$J)
     35 Q:'$G(DIC)  Q:'$L(DR)  Q:'$G(DA)
     36 S NUMDIC=DIC
     37 D EN^DIQ1
     38 M RESULTS=^UTILITY("DIQ1",$J,NUMDIC,DA)
     39 K ^UTILITY("DIQ1",$J)
     40 Q
     41GBLREF(FILENUM) ; $$(file#) -> global reference
     42 I '$G(FILENUM) Q ""
     43 Q $$ROOT^DILFD(+FILENUM)
     44INDEX(DIK,DA) ; index entry in file   -  from ORWGAPIP
     45 D IX1^DIK
     46 Q
     47XDEL(ENTITY,PARAM,NAME,ORERR) ; from ORWGAPIP
     48 D DEL^XPAR(ENTITY,PARAM,NAME,.ORERR)
     49 Q
     50XEN(ENTITY,PARAM,NAME,ORVAL,ORERR) ; from ORWGAPIP
     51 D EN^XPAR(ENTITY,PARAM,NAME,.ORVAL,.ORERR)
     52 Q
     53XENVAL(ORVALUES,PARAM) ;
     54 D ENVAL^XPAR(.ORVALUES,PARAM)
     55 Q
     56XGET(ENTITY,PARAM,INST,FORMAT) ; $$(...) -> parameter values
     57 Q $$GET^XPAR(ENTITY,PARAM,INST,FORMAT)
     58XGETLST(ORLIST,ENTITY,PARAM) ; from ORWGAPIP
     59 D GETLST^XPAR(.ORLIST,ENTITY,PARAM)
     60 Q
     61XGETLST1(ORLIST,ENTITY,PARAM,FORMAT,ORERR) ; from ORWGAPIP
     62 D GETLST^XPAR(.ORLIST,ENTITY,PARAM,FORMAT,.ORERR)
     63 Q
     64XGETWP(ORWP,ENTITY,PARAM,ALL) ; from ORWGAPIP
     65 D GETWP^XPAR(.ORWP,ENTITY,PARAM,ALL)
     66 Q
     67 ; kernel functions
     68FMADD(X,D,H,M,S) ;
     69 Q $$FMADD^XLFDT(X,$G(D),$G(H),$G(M),$G(S))
     70NOW() ;
     71 Q $$NOW^XLFDT
     72LOW(X) ;
     73 Q $$LOW^XLFSTR(X)
     74REPLACE(STRING,ORARRAY) ;
     75 Q $$REPLACE^XLFSTR(STRING,.ORARRAY)
     76TRIM(X,F,V) ;
     77 Q $$TRIM^XLFSTR(X,$G(F,"LR"),$G(V," "))
     78UP(X) ;
     79 Q $$UP^XLFSTR(X)
     80INSIG(NODE) ; $$(node) -> sig ; replace INSIG^ORWGAPIA with this code in v27
     81 N SIG,SUB,VALUES K VALUES
     82 S SUB=$P($G(NODE),";",2)
     83 D RXIN^ORWGAPIA(NODE,.VALUES)
     84 S SIG=""
     85 I SUB=5 D
     86 . S SIG="  Give: "_$G(VALUES("MR"))
     87 . S SIG=SIG_" "_$P($G(VALUES("SCH",1,0)),U)
     88 . S SIG=SIG_" "_$P($G(VALUES("SCH",1,0)),U,2)
     89 I SUB="IV" D
     90 . S SIG="  Give: "_$G(VALUES("DO"))
     91 . S SIG=SIG_" "_$$EXT^ORWGAPIX($G(VALUES("START")),55.01,.02)
     92 . S SIG=SIG_" "_$G(VALUES("SCH",1,0))
     93 Q SIG
     94 ;
     95BMIITEMS(ITEMS,CNT,TMP) ; from ORWGAPIR
     96 N BMI,NUM,REPLACE K REPLACE
     97 S REPLACE("WEIGHT")="BODY MASS INDEX"
     98 S BMI=""
     99 S NUM=0
     100 I 'TMP D
     101 . F  S NUM=$O(ITEMS(NUM)) Q:NUM<1  D
     102 .. I $P(ITEMS(NUM),U,2)=8 S $P(BMI,U)=1
     103 .. I $P(ITEMS(NUM),U,2)=9 S $P(BMI,U,2)=ITEMS(NUM)
     104 I TMP D
     105 . F  S NUM=$O(^TMP(ITEMS,$J,NUM)) Q:NUM<1  D
     106 .. I $P(^TMP(ITEMS,$J,NUM),U,2)=8 S $P(BMI,U)=1
     107 .. I $P(^TMP(ITEMS,$J,NUM),U,2)=9 S $P(BMI,U,2)=^TMP(ITEMS,$J,NUM)
     108 I BMI,$L(BMI)>3 D
     109 . S CNT=CNT+1
     110 . S RESULT=$P(BMI,U,2,99)
     111 . S RESULT=$$REPLACE^ORWGAPIX(RESULT,.REPLACE)
     112 . S $P(RESULT,U,2)=99999
     113 . D SETUP^ORWGAPIU(.ITEMS,RESULT,TMP,.CNT)
     114 Q
     115 ;
     116BMIDATA(DATA,ITEM,START,DFN,CNT,TMP) ; from ORWGAPI4
     117 N DATE,DATE2,NODE,RESULT,VALUE,W K VALUE
     118 S DATE="",DATE2="",CNT=$G(CNT)
     119 F  S DATE=$O(^PXRMINDX(120.5,"PI",DFN,9,DATE)) Q:DATE=""  D
     120 . I DATE>START Q
     121 . S NODE=""
     122 . F  S NODE=$O(^PXRMINDX(120.5,"PI",DFN,9,DATE,NODE)) Q:NODE=""  D
     123 .. D VITAL^ORWGAPIA(.VALUE,NODE) S WT=$P($G(VALUE(7)),U) I 'WT Q
     124 .. S BMI=$$BMI(DFN,WT,DATE) I 'BMI Q
     125 .. S RESULT=120.5_U_ITEM_U_DATE_U_DATE2_U_BMI
     126 .. D SETUP^ORWGAPIU(.DATA,RESULT,TMP,.CNT)
     127 Q
     128 ;
     129BMI(DFN,WT,DATE) ; $$(dfn,wt,date) -> bmi, else ""
     130 N HDATE,HT,NEXT,NODE,PREV
     131 I '$O(^PXRMINDX(120.5,"PI",DFN,8,0)) Q ""
     132 S NODE=$O(^PXRMINDX(120.5,"PI",DFN,8,DATE,""))
     133 I '$L(NODE) D
     134 . S NEXT=+$O(^PXRMINDX(120.5,"PI",DFN,8,DATE))
     135 . S PREV=+$O(^PXRMINDX(120.5,"PI",DFN,8,DATE),-1)
     136 . S NODE=$O(^PXRMINDX(120.5,"PI",DFN,8,$$CLOSEST(DATE,NEXT,PREV),""))
     137 I '$L(NODE) Q ""
     138 D VITAL^ORWGAPIA(.VALUE,NODE) S HT=$P($G(VALUE(7)),U) I 'HT Q ""
     139 Q $$CALCBMI(HT,WT)
     140 ;
     141CALCBMI(HT,WT) ; $$(ht,wt) -> bmi  uses (inches,lbs)
     142 S WT=WT/2.2 ;+$$WEIGHT^XLFMSMT(WT,"LB","KG")
     143 S HT=HT*2.54/100 ;+$$LENGTH^XLFMSMT(HT,"IN","M")
     144 Q $J(WT/(HT*HT),0,2)
     145 ;
     146CLOSEST(DATE,NEXT,PREV) ;
     147 I $$FMDIFF^XLFDT(DATE,NEXT,2)>$$FMDIFF^XLFDT(DATE,PREV,2) Q PREV
     148 Q NEXT
     149 ;
     150BMILAST(DFN,ARRAY,CNT) ;
     151 N BMI,DATE,NUM,WT
     152 S (DATE,NUM,WT)=0
     153 F  S NUM=$O(ARRAY(NUM)) Q:NUM<1  D  Q:WT
     154 . I $P(ARRAY(NUM),U,2)'="WT" Q
     155 . S WT=+$P(ARRAY(NUM),U,3)
     156 . S DATE=$P(ARRAY(NUM),U,4)
     157 I 'WT Q
     158 I 'DATE Q
     159 S BMI=$$BMI(DFN,WT,DATE)
     160 I 'BMI Q
     161 S CNT=CNT+1
     162 S ARRAY(CNT)="-1^BMI^"_BMI_U_DATE_U_BMI_"^^"
     163 Q
Note: See TracChangeset for help on using the changeset viewer.