HMPDMDC ;SLC/MKB,DP,ASMR/RRB - CLiO extract;8/2/11 15:29
;;2.0;ENTERPRISE HEALTH MANAGEMENT PLATFORM;**;Sep 01, 2011;Build 63
;Per VA Directive 6402, this routine should not be modified.
;
; External References DBIA#
; ------------------- -----
; ^MDC(704.101 5748 (Private)
; ^MDC(704.102 5748 (Private)
; ^MDC(704.117 5748 (Private)
; ^MDC(704.118 5811 (Private)
; DIC 2051
; DIQ 2056
; XLFDT 10103
; XLFSTR 10104
Q
; ------------ Get observations from VistA ------------
;
EN(DFN,BEG,END,MAX,ID) ; -- find patient's observations
N HMPCLIO,HMPN,HMPITM,HMPCNT,X
;
; get one observation
I $L($G(ID)) D EN1(ID,.HMPITM),XML(.HMPITM) Q
;
; get all patient observations
S DFN=+$G(DFN) Q:DFN<1
S BEG=$G(BEG,1410101),END=$G(END,4141015),MAX=$G(MAX,9999),HMPCNT=0
;D QRYPT^MDCLIO1("HMPCLIO",DFN,BEG,END) ;all [verified] observations
D QRYPT("HMPCLIO",DFN,BEG,END) ;all [verified] observations
S HMPN=0 F S HMPN=$O(HMPCLIO(HMPN)) Q:(HMPN<1)!(HMPCNT'<MAX) D
. S ID=$G(HMPCLIO(HMPN)) K HMPITM ;GUID
. D EN1(ID,.HMPITM) Q:'$D(HMPITM)
. D XML(.HMPITM) S HMPCNT=HMPCNT+1
Q
;
EN1(GUID,CLIO) ; -- return an observation in CLIO("attribute")=value
N HMPT,HMPC,LOC,I,X,Y K CLIO
S GUID=$G(GUID) Q:GUID="" ;invalid GUID
;D QRYOBS^MDCLIO1("HMPC",GUID) Q:'$D(HMPC) ;doesn't exist
D QRYOBS("HMPC",GUID) Q:'$D(HMPC) ;doesn't exist
Q:$L($G(HMPC("PARENT_ID","E"))) ;PARENT also in list
S CLIO("id")=GUID,CLIO("vuid")=$G(HMPC("TERM_ID","I"))
S CLIO("name")=$G(HMPC("TERM_ID","E"))
S CLIO("value")=$G(HMPC("SVALUE","E"))
S CLIO("units")=$G(HMPC("UNIT_ID","ABBV"))
S CLIO("entered")=$G(HMPC("ENTERED_DATE_TIME","I"))
S CLIO("observed")=$G(HMPC("OBSERVED_DATE_TIME","I"))
;D QRYTYPES^MDCLIO1("HMPT")
D QRYTYPES("HMPT")
F I=3:1:7 S X=$G(HMPT(I,"XML")) Q:I<1 I $L($G(HMPC(X,"E"))) D
. S Y=HMPT(I,"NAME"),Y=$S(Y="LOCATION":"bodySite",1:$$LOW^XLFSTR(Y))
. S CLIO(Y)=HMPC(X,"I")_U_HMPC(X,"E")
S CLIO("range")=$G(HMPC("RANGE","E"))
S CLIO("status")=$G(HMPC("STATUS","E"))
S LOC=$G(HMPC("HOSPITAL_LOCATION_ID","I")),CLIO("facility")=$$FAC^HMPD(LOC)
S CLIO("location")=LOC_U_$G(HMPC("HOSPITAL_LOCATION_ID","E"))
S CLIO("comment")=$G(HMPC("COMMENT","E"))
Q
;
; ------------ Return data to middle tier ------------
;
XML(OBS) ; -- Return observation as XML in @HMP@(#)
N ATT,X,Y,I,J,P,NAMES,TAG
D ADD("<observation>") S HMPTOTL=$G(HMPTOTL)+1
S ATT="" F S ATT=$O(OBS(ATT)) Q:ATT="" D
. S X=$G(OBS(ATT)),Y="" Q:'$L(X)
. I X'["^" S Y="<"_ATT_" value='"_$$ESC^HMPD(X)_"' />" D ADD(Y) Q
. I $L(X)>1 D
.. S Y="<"_ATT_" "
.. F P=1:1 S TAG=$P("code^name^Z",U,P) Q:TAG="Z" I $L($P(X,U,P)) S Y=Y_TAG_"='"_$$ESC^HMPD($P(X,U,P))_"' "
.. S Y=Y_"/>" D ADD(Y)
D ADD("</observation>")
Q
;
LOOP() ; -- build sub-items string from NAMES and X
N STR,P,TAG S STR=""
F P=1:1 S TAG=$P(NAMES,U,P) Q:TAG="Z" I $L($P(X,U,P)) S STR=STR_TAG_"='"_$$ESC^HMPD($P(X,U,P))_"' "
Q STR
;
ADD(X) ; Add a line @HMP@(n)=X
S HMPI=$G(HMPI)+1
S @HMP@(HMPI)=X
Q
;
; -- CliO specific code accessing the ^MDC( global for data
;
QRYPT(HMPRET,HMPDFN,HMPFR,HMPTO,HMPSTAT) ; List of observations by pt, datetime, status
K @HMPRET
N HMPDT,HMPIEN
S HMPSTAT=$G(HMPSTAT,1) ; Default to Verified
F HMPDT=HMPFR-.0000001:0 S HMPDT=$O(^MDC(704.117,"AS",HMPSTAT,HMPDFN,HMPDT)) Q:'HMPDT!(HMPDT>HMPTO) D
. F HMPIEN=0:0 S HMPIEN=$O(^MDC(704.117,"AS",HMPSTAT,HMPDFN,HMPDT,HMPIEN)) Q:'HMPIEN D
. . S:$P(^MDC(704.117,HMPIEN,0),U,9)=HMPSTAT @HMPRET@(HMPIEN)=$P(^MDC(704.117,HMPIEN,0),U)
Q
;
QRYOBS(HMPRET,HMPID) ; Return a single observation
K @HMPRET
N HMPTMP,HMPIEN
S HMPIEN=$$FIND1^DIC(704.117,"","PKX",HMPID,"PK")
I HMPIEN<1 S @HMPRET@(0)="-1^No such observation '"_HMPID_"'" Q
D GETS^DIQ(704.117,HMPIEN_",","*","EIR","HMPTMP")
M @HMPRET=HMPTMP(704.117,HMPIEN_",") K HMPTMP
S @HMPRET@("TERM_ID","I")=$$GET1^DIQ(704.117,HMPIEN_",",".07:99.99")
S @HMPRET@("TERM_ID","E")=$$GET1^DIQ(704.117,HMPIEN_",",".07:.02")
S @HMPRET@("TERM_ID","GUID")=$$GET1^DIQ(704.117,HMPIEN_",",".07")
S @HMPRET@("TERM_ID","ABBV")=$$GET1^DIQ(704.117,HMPIEN_",",".07:.03")
D:$$GET1^DIQ(704.117,HMPIEN_",",".07:.06","I")=3 ; Coded data values
. S HMPTMP=$$FIND1^DIC(704.101,"","PKX",@HMPRET@("SVALUE","I"),"PK")
. S @HMPRET@("SVALUE","E")=$$GET1^DIQ(704.101,HMPTMP_",",.02)
D QRYQUAL(HMPRET,HMPIEN)
D QRYCTX($NA(@HMPRET@("CONTEXT")),HMPID)
Q
;
QRYQUAL(HMPRET,HMPIEN) ; Returns the qualifiers for obs in HMPIEN
; We do NOT want to kill HMPRET here because it points at the parent node of the return
N HMPQUAL
F Y=0:0 S Y=$O(^MDC(704.118,"PK",HMPIEN,Y)) Q:'Y D ;ICR 5811 DE2818 ASF 11/25/15
. S HMPQUAL=$$GET1^DIQ(704.101,Y_",",".05:.02")
. S @HMPRET@(HMPQUAL,"I")=$$GET1^DIQ(704.101,Y_",","99.99")
. S @HMPRET@(HMPQUAL,"E")=$$GET1^DIQ(704.101,Y_",",".02")
. S @HMPRET@(HMPQUAL,"GUID")=$$GET1^DIQ(704.101,Y_",",".01")
. S @HMPRET@(HMPQUAL,"ABBV")=$$GET1^DIQ(704.101,Y_",",".03")
Q
;
QRYCTX(HMPRET,HMPID) ; We need a terminology based context observation relationship here
N HMPIEN,HMPCTX,HMPDT,HMPFR,HMPTO,HMPDFN,HMPTERM,HMPCNT,HMPXID,HMPOBS
S HMPIEN=+$$FIND1^DIC(704.117,"","PKX",HMPID,"PK") Q:HMPIEN<1
S HMPCTX=$$GET1^DIQ(704.117,HMPIEN_",",.07) ; GET THE PRIMARY TERM (GUID)
; FILTER OUT EVERYTHING BUT SpO2 for now
Q:HMPCTX'="{5F84DD55-3CCF-094C-2536-B51EB7FAD999}"
S HMPDFN=+$$GET1^DIQ(704.117,HMPIEN_",",.08,"I") ; GET THE PATIENT
S HMPDT=+$$GET1^DIQ(704.117,HMPIEN_",",.05,"I") ; GET THE OBS DATE
S HMPFR=$$FMADD^XLFDT(HMPDT,0,0,0,-30) ; PREVIOUS 30 SECONDS
S HMPTO=$$FMADD^XLFDT(HMPDT,0,0,0,30) ; NEXT 30 SECONDS
; Now we find the context observations
F HMPDT=HMPFR:0 S HMPDT=$O(^MDC(704.117,"PT",HMPDFN,HMPDT)) Q:'HMPDT!(HMPDT>HMPTO) D ;ICR 5810 DE2818 ASF 11/25/15
. F HMPOBS=0:0 S HMPOBS=$O(^MDC(704.117,"PT",HMPDFN,HMPDT,HMPOBS)) Q:'HMPOBS D
. . Q:$$GET1^DIQ(704.117,HMPOBS_",",.09,"I")'=1 ; Verified Only
. . S HMPXID=$$GET1^DIQ(704.117,HMPOBS_",",.01)
. . Q:HMPXID=HMPID ; You should ignore yourself in this loop
. . S HMPTERM=$$GET1^DIQ(704.117,HMPOBS_",",".07")
. . ; INSERT FILTER CODE FOR O2 Flowrate and Concentration here - In the future we will find all context terms for an observation in terminology
. . Q:(HMPTERM'="{56F82CAC-3564-46CE-A520-1025020DADE9}")&(HMPTERM'="{3BB314E8-9BBB-480E-B34E-B56EDE43BAC4}")
. . S HMPCNT=$O(@HMPRET@(""),-1)+1,@HMPRET@(0)=HMPCNT
. . S @HMPRET@(HMPCNT,"OBS_ID","I")=HMPXID
. . S @HMPRET@(HMPCNT,"OBS_ID","E")=HMPXID
. . S @HMPRET@(HMPCNT,"TERM_ID","I")=$$GET1^DIQ(704.117,HMPOBS_",",".07:99.99")
. . S @HMPRET@(HMPCNT,"TERM_ID","E")=$$GET1^DIQ(704.117,HMPOBS_",",".07:.02")
. . S @HMPRET@(HMPCNT,"SVALUE","I")=$$GET1^DIQ(704.117,HMPOBS_",",".1","I")
. . S @HMPRET@(HMPCNT,"SVALUE","E")=$$GET1^DIQ(704.117,HMPOBS_",",".1","E")
. . D QRYQUAL($NA(@HMPRET@(HMPCNT)),HMPOBS)
Q
;
QRYTYPES(HMPRET) ; Return the terminology Term Types
K @HMPRET
N X
F X=0:0 S X=$O(^MDC(704.102,X)) Q:'X D ;ICR 5748 DE2818 ASF 11/25/15
. S @HMPRET@(X,"NAME")=$P(^MDC(704.102,X,0),U,1)
. S @HMPRET@(X,"XML")=$P(^MDC(704.102,X,0),U,2)
. S @HMPRET@("B",$P(^MDC(704.102,X,0),U,1),X)=""
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HHMPDMDC 7410 printed Oct 16, 2024@17:54:23 Page 2
HMPDMDC ;SLC/MKB,DP,ASMR/RRB - CLiO extract;8/2/11 15:29
+1 ;;2.0;ENTERPRISE HEALTH MANAGEMENT PLATFORM;**;Sep 01, 2011;Build 63
+2 ;Per VA Directive 6402, this routine should not be modified.
+3 ;
+4 ; External References DBIA#
+5 ; ------------------- -----
+6 ; ^MDC(704.101 5748 (Private)
+7 ; ^MDC(704.102 5748 (Private)
+8 ; ^MDC(704.117 5748 (Private)
+9 ; ^MDC(704.118 5811 (Private)
+10 ; DIC 2051
+11 ; DIQ 2056
+12 ; XLFDT 10103
+13 ; XLFSTR 10104
+14 QUIT
+15 ; ------------ Get observations from VistA ------------
+16 ;
EN(DFN,BEG,END,MAX,ID) ; -- find patient's observations
+1 NEW HMPCLIO,HMPN,HMPITM,HMPCNT,X
+2 ;
+3 ; get one observation
+4 IF $LENGTH($GET(ID))
DO EN1(ID,.HMPITM)
DO XML(.HMPITM)
QUIT
+5 ;
+6 ; get all patient observations
+7 SET DFN=+$GET(DFN)
if DFN<1
QUIT
+8 SET BEG=$GET(BEG,1410101)
SET END=$GET(END,4141015)
SET MAX=$GET(MAX,9999)
SET HMPCNT=0
+9 ;D QRYPT^MDCLIO1("HMPCLIO",DFN,BEG,END) ;all [verified] observations
+10 ;all [verified] observations
DO QRYPT("HMPCLIO",DFN,BEG,END)
+11 SET HMPN=0
FOR
SET HMPN=$ORDER(HMPCLIO(HMPN))
if (HMPN<1)!(HMPCNT'<MAX)
QUIT
Begin DoDot:1
+12 ;GUID
SET ID=$GET(HMPCLIO(HMPN))
KILL HMPITM
+13 DO EN1(ID,.HMPITM)
if '$DATA(HMPITM)
QUIT
+14 DO XML(.HMPITM)
SET HMPCNT=HMPCNT+1
End DoDot:1
+15 QUIT
+16 ;
EN1(GUID,CLIO) ; -- return an observation in CLIO("attribute")=value
+1 NEW HMPT,HMPC,LOC,I,X,Y
KILL CLIO
+2 ;invalid GUID
SET GUID=$GET(GUID)
if GUID=""
QUIT
+3 ;D QRYOBS^MDCLIO1("HMPC",GUID) Q:'$D(HMPC) ;doesn't exist
+4 ;doesn't exist
DO QRYOBS("HMPC",GUID)
if '$DATA(HMPC)
QUIT
+5 ;PARENT also in list
if $LENGTH($GET(HMPC("PARENT_ID","E")))
QUIT
+6 SET CLIO("id")=GUID
SET CLIO("vuid")=$GET(HMPC("TERM_ID","I"))
+7 SET CLIO("name")=$GET(HMPC("TERM_ID","E"))
+8 SET CLIO("value")=$GET(HMPC("SVALUE","E"))
+9 SET CLIO("units")=$GET(HMPC("UNIT_ID","ABBV"))
+10 SET CLIO("entered")=$GET(HMPC("ENTERED_DATE_TIME","I"))
+11 SET CLIO("observed")=$GET(HMPC("OBSERVED_DATE_TIME","I"))
+12 ;D QRYTYPES^MDCLIO1("HMPT")
+13 DO QRYTYPES("HMPT")
+14 FOR I=3:1:7
SET X=$GET(HMPT(I,"XML"))
if I<1
QUIT
IF $LENGTH($GET(HMPC(X,"E")))
Begin DoDot:1
+15 SET Y=HMPT(I,"NAME")
SET Y=$SELECT(Y="LOCATION":"bodySite",1:$$LOW^XLFSTR(Y))
+16 SET CLIO(Y)=HMPC(X,"I")_U_HMPC(X,"E")
End DoDot:1
+17 SET CLIO("range")=$GET(HMPC("RANGE","E"))
+18 SET CLIO("status")=$GET(HMPC("STATUS","E"))
+19 SET LOC=$GET(HMPC("HOSPITAL_LOCATION_ID","I"))
SET CLIO("facility")=$$FAC^HMPD(LOC)
+20 SET CLIO("location")=LOC_U_$GET(HMPC("HOSPITAL_LOCATION_ID","E"))
+21 SET CLIO("comment")=$GET(HMPC("COMMENT","E"))
+22 QUIT
+23 ;
+24 ; ------------ Return data to middle tier ------------
+25 ;
XML(OBS) ; -- Return observation as XML in @HMP@(#)
+1 NEW ATT,X,Y,I,J,P,NAMES,TAG
+2 DO ADD("<observation>")
SET HMPTOTL=$GET(HMPTOTL)+1
+3 SET ATT=""
FOR
SET ATT=$ORDER(OBS(ATT))
if ATT=""
QUIT
Begin DoDot:1
+4 SET X=$GET(OBS(ATT))
SET Y=""
if '$LENGTH(X)
QUIT
+5 IF X'["^"
SET Y="<"_ATT_" value='"_$$ESC^HMPD(X)_"' />"
DO ADD(Y)
QUIT
+6 IF $LENGTH(X)>1
Begin DoDot:2
+7 SET Y="<"_ATT_" "
+8 FOR P=1:1
SET TAG=$PIECE("code^name^Z",U,P)
if TAG="Z"
QUIT
IF $LENGTH($PIECE(X,U,P))
SET Y=Y_TAG_"='"_$$ESC^HMPD($PIECE(X,U,P))_"' "
+9 SET Y=Y_"/>"
DO ADD(Y)
End DoDot:2
End DoDot:1
+10 DO ADD("</observation>")
+11 QUIT
+12 ;
LOOP() ; -- build sub-items string from NAMES and X
+1 NEW STR,P,TAG
SET STR=""
+2 FOR P=1:1
SET TAG=$PIECE(NAMES,U,P)
if TAG="Z"
QUIT
IF $LENGTH($PIECE(X,U,P))
SET STR=STR_TAG_"='"_$$ESC^HMPD($PIECE(X,U,P))_"' "
+3 QUIT STR
+4 ;
ADD(X) ; Add a line @HMP@(n)=X
+1 SET HMPI=$GET(HMPI)+1
+2 SET @HMP@(HMPI)=X
+3 QUIT
+4 ;
+5 ; -- CliO specific code accessing the ^MDC( global for data
+6 ;
QRYPT(HMPRET,HMPDFN,HMPFR,HMPTO,HMPSTAT) ; List of observations by pt, datetime, status
+1 KILL @HMPRET
+2 NEW HMPDT,HMPIEN
+3 ; Default to Verified
SET HMPSTAT=$GET(HMPSTAT,1)
+4 FOR HMPDT=HMPFR-.0000001:0
SET HMPDT=$ORDER(^MDC(704.117,"AS",HMPSTAT,HMPDFN,HMPDT))
if 'HMPDT!(HMPDT>HMPTO)
QUIT
Begin DoDot:1
+5 FOR HMPIEN=0:0
SET HMPIEN=$ORDER(^MDC(704.117,"AS",HMPSTAT,HMPDFN,HMPDT,HMPIEN))
if 'HMPIEN
QUIT
Begin DoDot:2
+6 if $PIECE(^MDC(704.117,HMPIEN,0),U,9)=HMPSTAT
SET @HMPRET@(HMPIEN)=$PIECE(^MDC(704.117,HMPIEN,0),U)
End DoDot:2
End DoDot:1
+7 QUIT
+8 ;
QRYOBS(HMPRET,HMPID) ; Return a single observation
+1 KILL @HMPRET
+2 NEW HMPTMP,HMPIEN
+3 SET HMPIEN=$$FIND1^DIC(704.117,"","PKX",HMPID,"PK")
+4 IF HMPIEN<1
SET @HMPRET@(0)="-1^No such observation '"_HMPID_"'"
QUIT
+5 DO GETS^DIQ(704.117,HMPIEN_",","*","EIR","HMPTMP")
+6 MERGE @HMPRET=HMPTMP(704.117,HMPIEN_",")
KILL HMPTMP
+7 SET @HMPRET@("TERM_ID","I")=$$GET1^DIQ(704.117,HMPIEN_",",".07:99.99")
+8 SET @HMPRET@("TERM_ID","E")=$$GET1^DIQ(704.117,HMPIEN_",",".07:.02")
+9 SET @HMPRET@("TERM_ID","GUID")=$$GET1^DIQ(704.117,HMPIEN_",",".07")
+10 SET @HMPRET@("TERM_ID","ABBV")=$$GET1^DIQ(704.117,HMPIEN_",",".07:.03")
+11 ; Coded data values
if $$GET1^DIQ(704.117,HMPIEN_",",".07
Begin DoDot:1
+12 SET HMPTMP=$$FIND1^DIC(704.101,"","PKX",@HMPRET@("SVALUE","I"),"PK")
+13 SET @HMPRET@("SVALUE","E")=$$GET1^DIQ(704.101,HMPTMP_",",.02)
End DoDot:1
+14 DO QRYQUAL(HMPRET,HMPIEN)
+15 DO QRYCTX($NAME(@HMPRET@("CONTEXT")),HMPID)
+16 QUIT
+17 ;
QRYQUAL(HMPRET,HMPIEN) ; Returns the qualifiers for obs in HMPIEN
+1 ; We do NOT want to kill HMPRET here because it points at the parent node of the return
+2 NEW HMPQUAL
+3 ;ICR 5811 DE2818 ASF 11/25/15
FOR Y=0:0
SET Y=$ORDER(^MDC(704.118,"PK",HMPIEN,Y))
if 'Y
QUIT
Begin DoDot:1
+4 SET HMPQUAL=$$GET1^DIQ(704.101,Y_",",".05:.02")
+5 SET @HMPRET@(HMPQUAL,"I")=$$GET1^DIQ(704.101,Y_",","99.99")
+6 SET @HMPRET@(HMPQUAL,"E")=$$GET1^DIQ(704.101,Y_",",".02")
+7 SET @HMPRET@(HMPQUAL,"GUID")=$$GET1^DIQ(704.101,Y_",",".01")
+8 SET @HMPRET@(HMPQUAL,"ABBV")=$$GET1^DIQ(704.101,Y_",",".03")
End DoDot:1
+9 QUIT
+10 ;
QRYCTX(HMPRET,HMPID) ; We need a terminology based context observation relationship here
+1 NEW HMPIEN,HMPCTX,HMPDT,HMPFR,HMPTO,HMPDFN,HMPTERM,HMPCNT,HMPXID,HMPOBS
+2 SET HMPIEN=+$$FIND1^DIC(704.117,"","PKX",HMPID,"PK")
if HMPIEN<1
QUIT
+3 ; GET THE PRIMARY TERM (GUID)
SET HMPCTX=$$GET1^DIQ(704.117,HMPIEN_",",.07)
+4 ; FILTER OUT EVERYTHING BUT SpO2 for now
+5 if HMPCTX'="{5F84DD55-3CCF-094C-2536-B51EB7FAD999}"
QUIT
+6 ; GET THE PATIENT
SET HMPDFN=+$$GET1^DIQ(704.117,HMPIEN_",",.08,"I")
+7 ; GET THE OBS DATE
SET HMPDT=+$$GET1^DIQ(704.117,HMPIEN_",",.05,"I")
+8 ; PREVIOUS 30 SECONDS
SET HMPFR=$$FMADD^XLFDT(HMPDT,0,0,0,-30)
+9 ; NEXT 30 SECONDS
SET HMPTO=$$FMADD^XLFDT(HMPDT,0,0,0,30)
+10 ; Now we find the context observations
+11 ;ICR 5810 DE2818 ASF 11/25/15
FOR HMPDT=HMPFR:0
SET HMPDT=$ORDER(^MDC(704.117,"PT",HMPDFN,HMPDT))
if 'HMPDT!(HMPDT>HMPTO)
QUIT
Begin DoDot:1
+12 FOR HMPOBS=0:0
SET HMPOBS=$ORDER(^MDC(704.117,"PT",HMPDFN,HMPDT,HMPOBS))
if 'HMPOBS
QUIT
Begin DoDot:2
+13 ; Verified Only
if $$GET1^DIQ(704.117,HMPOBS_",",.09,"I")'=1
QUIT
+14 SET HMPXID=$$GET1^DIQ(704.117,HMPOBS_",",.01)
+15 ; You should ignore yourself in this loop
if HMPXID=HMPID
QUIT
+16 SET HMPTERM=$$GET1^DIQ(704.117,HMPOBS_",",".07")
+17 ; INSERT FILTER CODE FOR O2 Flowrate and Concentration here - In the future we will find all context terms for an observation in terminology
+18 if (HMPTERM'="{56F82CAC-3564-46CE-A520-1025020DADE9}")&(HMPTERM'="{3BB314E8-9BBB-480E-B34E-B56EDE43BAC4}")
QUIT
+19 SET HMPCNT=$ORDER(@HMPRET@(""),-1)+1
SET @HMPRET@(0)=HMPCNT
+20 SET @HMPRET@(HMPCNT,"OBS_ID","I")=HMPXID
+21 SET @HMPRET@(HMPCNT,"OBS_ID","E")=HMPXID
+22 SET @HMPRET@(HMPCNT,"TERM_ID","I")=$$GET1^DIQ(704.117,HMPOBS_",",".07:99.99")
+23 SET @HMPRET@(HMPCNT,"TERM_ID","E")=$$GET1^DIQ(704.117,HMPOBS_",",".07:.02")
+24 SET @HMPRET@(HMPCNT,"SVALUE","I")=$$GET1^DIQ(704.117,HMPOBS_",",".1","I")
+25 SET @HMPRET@(HMPCNT,"SVALUE","E")=$$GET1^DIQ(704.117,HMPOBS_",",".1","E")
+26 DO QRYQUAL($NAME(@HMPRET@(HMPCNT)),HMPOBS)
End DoDot:2
End DoDot:1
+27 QUIT
+28 ;
QRYTYPES(HMPRET) ; Return the terminology Term Types
+1 KILL @HMPRET
+2 NEW X
+3 ;ICR 5748 DE2818 ASF 11/25/15
FOR X=0:0
SET X=$ORDER(^MDC(704.102,X))
if 'X
QUIT
Begin DoDot:1
+4 SET @HMPRET@(X,"NAME")=$PIECE(^MDC(704.102,X,0),U,1)
+5 SET @HMPRET@(X,"XML")=$PIECE(^MDC(704.102,X,0),U,2)
+6 SET @HMPRET@("B",$PIECE(^MDC(704.102,X,0),U,1),X)=""
End DoDot:1
+7 QUIT
+8 ;