Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: BTPWPNLV

BTPWPNLV.m

Go to the documentation of this file.
  1. BTPWPNLV ;VNGT/HS/ALA-CMET Panel ; 03 Aug 2009 4:07 PM
  1. ;;1.2;CARE MANAGEMENT EVENT TRACKING;;Jul 07, 2017;Build 71
  1. ;
  1. EN(DATA,OWNR,PLIEN,VIEW,STATE,PLIST,CMLST,PARMS) ;EP - BTPW GET EVENTS BY PANEL
  1. ;
  1. ; Input
  1. ; OWNR - Owner
  1. ; PLIEN - Panel IEN
  1. ; VIEW - (Q)ueued, (T)racked, (N) Planned
  1. ; STATE - State or status
  1. ; PLIST - List of DFNs to include
  1. ; CMLST - List of file IENs to include (optional)
  1. ; PARMS - List of panel filters - Event Type Only (See BTPWPEVF for details)
  1. ;
  1. NEW UID,II,STATUS,BDT,EDT,CATLST,COMM
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BTPWPNLV",UID))
  1. K @DATA
  1. ;
  1. S II=0
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BTPWPNLV D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. ;
  1. S STATE=$G(STATE,"")
  1. ;
  1. ;Define filter variables
  1. I $G(VIEW)="Q" D FINIT^BTPWPEVF(.STATUS,.BDT,.EDT,.CATLST,.COMM,.PARMS)
  1. ;
  1. ;Check for IEN List
  1. I $G(CMLST)]"" D
  1. . N I,IEN
  1. . F I=1:1:$L(CMLST,$C(29)) S IEN=$P(CMLST,$C(29),I) I IEN]"" S CMLST(IEN)=""
  1. ;
  1. ; If a list of CMIENs, process them instead of entire panel
  1. I $O(CMLST(""))]"" D G DONE
  1. . N CIEN
  1. . S CIEN="" F S CIEN=$O(CMLST(CIEN)) Q:CIEN="" D
  1. .. ;
  1. .. ;Get DFN
  1. .. I VIEW="Q" S DFN=$$GET1^DIQ(90629,CIEN_",",".02","I")
  1. .. E S DFN=$$GET1^DIQ(90620,CIEN_",",".02","I")
  1. .. Q:DFN=""
  1. .. I $P($G(^BQICARE(OWNR,1,PLIEN,40,DFN,0)),"^",2)="R" Q
  1. .. D PAT(.DATA,OWNR,PLIEN,STATE,DFN,.CMLST)
  1. ;
  1. ; If a list of DFNs, process them instead of entire panel
  1. I $D(PLIST)>0 D G DONE
  1. . N BN,BQI
  1. . I $D(PLIST)>1 D
  1. .. S LIST="",BN=""
  1. .. F S BN=$O(PLIST(BN)) Q:BN="" S LIST=LIST_PLIST(BN)
  1. .. K PLIST S PLIST=LIST
  1. . F BQI=1:1 S DFN=$P(PLIST,$C(28),BQI) Q:DFN="" D
  1. .. I $P($G(^BQICARE(OWNR,1,PLIEN,40,DFN,0)),"^",2)="R" Q
  1. .. D PAT(.DATA,OWNR,PLIEN,STATE,DFN,.CMLST)
  1. ;
  1. S DFN=0
  1. I $O(^BQICARE(OWNR,1,PLIEN,40,DFN))="" D PAT(.DATA,OWNR,PLIEN,STATE,"",.CMLST) G DONE
  1. ;
  1. F S DFN=$O(^BQICARE(OWNR,1,PLIEN,40,DFN)) Q:'DFN D
  1. . I $P($G(^BQICARE(OWNR,1,PLIEN,40,DFN,0)),"^",2)="R" Q
  1. . D PAT(.DATA,OWNR,PLIEN,STATE,DFN,.CMLST)
  1. ;
  1. DONE ;
  1. I II=0,'$D(@DATA) D PAT(.DATA,OWNR,PLIEN,STATE,"",.CMLST)
  1. S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. PAT(DATA,OWNR,PLIEN,STATE,DFN,CMLST) ;EP - Build record by patient
  1. ; Get standard display
  1. NEW IEN,HDR,HEADR,SENS,HDOB,Y,STVW,TEXT,ORD,GMET,GHDR,RGIEN,CRIEN,CARE,CTYP
  1. NEW GIEN,CIEN,SVALUE,VALUE,VAL
  1. S VALUE="",RGIEN="",STATE=$G(STATE,"")
  1. I DFN'="" S Y=$$GET1^DIQ(9000001,DFN_",",1102.2,"I"),HDOB=$$FMTE^BQIUL1(Y)
  1. I DFN'="" S SVALUE=DFN_U_$$SENS^BQIULPT(DFN)_U_$$FLG^BQIULPT(OWNR,PLIEN,DFN)_U_$$CALR^BQIULPT(DFN)_U_$$MFLAG^BQIULPT(OWNR,PLIEN,DFN)_U_HDOB_U
  1. S HEADR="I00010HIDE_DFN^T00001SENS_FLAG^T00001FLAG_INDICATOR^T00001COMM_FLAG^T00001HIDE_MANUAL^D00030HIDE_DOB^I00010HIDE_CMET_IEN^"
  1. S HEADR=HEADR_"I00010HIDE_VISIT_IEN^I00010HIDE_EVENTTYPE_IEN^"
  1. ;
  1. ;Custom Header
  1. I VIEW="Q" S HEADR=HEADR_"T00060HIDE_BTPWQENM^D00015HIDE_BTPWQEDT^T00020HIDE_BTPWQSTS^"
  1. E S HEADR=HEADR_"T00060HIDE_BTPWTENM^D00015HIDE_BTPWTEDT^T00015HIDE_BTPWTSTA^T00010HIDE_PREVIOUS_EVENT^"
  1. ;
  1. S CARE="Event Tracking"
  1. I VIEW="Q" S CARE="Events"
  1. I VIEW="T" S CARE="Tracked Events"
  1. I VIEW="N" S CARE="Followup Events"
  1. S CRIEN=$O(^BQI(90506.5,"B",CARE,"")),CTYP=$P(^BQI(90506.5,CRIEN,0),U,2)
  1. ;
  1. I DFN="" D FND Q
  1. ;
  1. I VIEW="Q" D
  1. . N QIEN,TIEN
  1. . S (QIEN,TIEN)=""
  1. . ;
  1. . ;Process individual (input) events
  1. . I $O(CMLST(""))]"" D Q
  1. .. F S QIEN=$O(CMLST(QIEN)) Q:QIEN="" D
  1. ... ;
  1. ... ;Panel Filters
  1. ... Q:'$$PEFIL^BTPWPEVF(STATUS,BDT,EDT,.CATLST,.COMM,QIEN)
  1. ... ;
  1. ... S TIEN=$P($G(^BTPWQ(QIEN,0)),U,14)
  1. ... ;
  1. ... ;Tack on CMET IEN, VISIT IEN, CATEGORY IEN, TICKLER_INDICATOR, EVENT NAME, EVENT DATE, STATUS
  1. ... S VALUE=SVALUE_QIEN_U_$$GET1^DIQ(90629,QIEN_",",".04","I")_U_$$GET1^DIQ(90629,QIEN_",",".01","I")
  1. ... S VALUE=VALUE_U_$$GET1^DIQ(90629,QIEN_",",".01","E")
  1. ... S VALUE=VALUE_U_$$FMTE^BQIUL1($$GET1^DIQ(90629,QIEN_",",".03","I"))_U_$$GET1^DIQ(90629,QIEN_",",".08","E")_U
  1. ... ;
  1. ... D FND
  1. . ;
  1. . ;Process entire panel
  1. . I STATE'="" F S QIEN=$O(^BTPWQ("AE",DFN,STATE,QIEN)) Q:QIEN="" D
  1. .. ;
  1. .. ;Panel Filters
  1. .. Q:'$$PEFIL^BTPWPEVF(STATUS,BDT,EDT,.CATLST,.COMM,QIEN)
  1. .. ;
  1. .. S TIEN=$P($G(^BTPWQ(QIEN,0)),U,14)
  1. .. ;
  1. .. ;Tack on CMET IEN, VISIT IEN, CATEGORY IEN, TICKLER_INDICATOR, EVENT NAME, EVENT DATE, STATUS
  1. .. S VALUE=SVALUE_QIEN_U_$$GET1^DIQ(90629,QIEN_",",".04","I")_U_$$GET1^DIQ(90629,QIEN_",",".01","I")
  1. .. S VALUE=VALUE_U_$$GET1^DIQ(90629,QIEN_",",".01","E")
  1. .. S VALUE=VALUE_U_$$FMTE^BQIUL1($$GET1^DIQ(90629,QIEN_",",".03","I"))_U_$$GET1^DIQ(90629,QIEN_",",".08","E")_U
  1. .. ;
  1. .. D FND
  1. . I STATE="" F S QIEN=$O(^BTPWQ("AD",DFN,QIEN)) Q:QIEN="" D
  1. .. ;
  1. .. ;Panel Filters
  1. .. Q:'$$PEFIL^BTPWPEVF(STATUS,BDT,EDT,.CATLST,.COMM,QIEN)
  1. .. ;
  1. .. S TIEN=$P($G(^BTPWQ(QIEN,0)),U,14)
  1. .. ;
  1. .. ;Tack on CMET IEN, VISIT IEN, CATEGORY IEN, TICKLER_INDICATOR, EVENT NAME, EVENT DATE, STATUS
  1. .. S VALUE=SVALUE_QIEN_U_$$GET1^DIQ(90629,QIEN_",",".04","I")_U_$$GET1^DIQ(90629,QIEN_",",".01","I")
  1. .. S VALUE=VALUE_U_$$GET1^DIQ(90629,QIEN_",",".01","E")
  1. .. S VALUE=VALUE_U_$$FMTE^BQIUL1($$GET1^DIQ(90629,QIEN_",",".03","I"))_U_$$GET1^DIQ(90629,QIEN_",",".08","E")_U
  1. .. ;
  1. .. D FND
  1. ;
  1. I VIEW="T"!(VIEW="N") D
  1. . N QIEN,TIEN,STATUS
  1. . S (QIEN,TIEN)=""
  1. . ;
  1. . ;Process individual (input) events
  1. . I $O(CMLST(""))]"" D Q
  1. .. F S TIEN=$O(CMLST(TIEN)) Q:TIEN="" D
  1. ... ;
  1. ... ; Don't show 'future' records
  1. ... I $P($G(^BTPWP(TIEN,1)),U,1)="F",VIEW'="N" Q
  1. ... I $P($G(^BTPWP(TIEN,1)),U,1)'="F",VIEW="N" Q
  1. ... S QIEN=$P($G(^BTPWP(TIEN,0)),U,14)
  1. ... ;
  1. ... ;Status Check - Must be Tracked
  1. ... I QIEN]"" S STATUS=$$GET1^DIQ(90629,QIEN_",",.08,"I") I STATUS'="",STATUS'="T" Q
  1. ... ;
  1. ... ;Tack on CMET IEN, VISIT IEN, CATEGORY IEN, TICKLER_INDICATOR, EVENT NAME, EVENT DATE, STATE, PREVIOUS EVENT
  1. ... S VALUE=SVALUE_TIEN_U_$$GET1^DIQ(90620,TIEN_",",".04","I")_U_$$GET1^DIQ(90620,TIEN_",",".01","I")
  1. ... S VALUE=VALUE_U_$$GET1^DIQ(90620,TIEN_",",".01","E")
  1. ... S VALUE=VALUE_U_$$FMTE^BQIUL1($$GET1^DIQ(90620,TIEN_",",".03","I"))_U_$$GET1^DIQ(90620,TIEN_",","1.01","E")
  1. ... S VALUE=VALUE_U_$$GET1^DIQ(90620,TIEN_",",".11","I")_U
  1. ... ;
  1. ... D FND
  1. . ;
  1. . ;Process entire panel
  1. . I STATE'="" F S TIEN=$O(^BTPWP("AE",DFN,STATE,TIEN)) Q:TIEN="" D
  1. .. ;
  1. .. S QIEN=$P($G(^BTPWP(TIEN,0)),U,14)
  1. .. ;
  1. .. ;Status Check - Must be Tracked
  1. .. I QIEN]"" S STATUS=$$GET1^DIQ(90629,QIEN_",",.08,"I") I STATUS'="",STATUS'="T" Q
  1. .. ;
  1. .. ;Tack on CMET IEN, VISIT IEN, CATEGORY IEN, TICKLER_INDICATOR, EVENT NAME, EVENT DATE, STATE
  1. .. S VALUE=SVALUE_TIEN_U_$$GET1^DIQ(90620,TIEN_",",".04","I")_U_$$GET1^DIQ(90620,TIEN_",",".01","I")
  1. .. S VALUE=VALUE_U_$$GET1^DIQ(90620,TIEN_",",".01","E")
  1. .. S VALUE=VALUE_U_$$FMTE^BQIUL1($$GET1^DIQ(90620,TIEN_",",".03","I"))_U_$$GET1^DIQ(90620,TIEN_",","1.01","E")
  1. .. S VALUE=VALUE_U_$$GET1^DIQ(90620,TIEN_",",".11","I")_U
  1. .. ;
  1. .. D FND
  1. . I STATE="" F S TIEN=$O(^BTPWP("AD",DFN,TIEN)) Q:TIEN="" D
  1. .. ;
  1. .. ; Don't show 'future' records
  1. .. I $P($G(^BTPWP(TIEN,1)),U,1)="F",VIEW'="N" Q
  1. .. I $P($G(^BTPWP(TIEN,1)),U,1)'="F",VIEW="N" Q
  1. .. S QIEN=$P($G(^BTPWP(TIEN,0)),U,14)
  1. .. ;
  1. .. ;Status Check - Must be Tracked
  1. .. I QIEN]"" S STATUS=$$GET1^DIQ(90629,QIEN_",",.08,"I") I STATUS'="",STATUS'="T" Q
  1. .. ;
  1. .. ;Tack on CMET IEN, VISIT IEN, CATEGORY IEN, TICKLER_INDICATOR, EVENT NAME, EVENT DATE, STATE
  1. .. S VALUE=SVALUE_TIEN_U_$$GET1^DIQ(90620,TIEN_",",".04","I")_U_$$GET1^DIQ(90620,TIEN_",",".01","I")
  1. .. S VALUE=VALUE_U_$$GET1^DIQ(90620,TIEN_",",".01","E")
  1. .. S VALUE=VALUE_U_$$FMTE^BQIUL1($$GET1^DIQ(90620,TIEN_",",".03","I"))_U_$$GET1^DIQ(90620,TIEN_",","1.01","E")
  1. .. S VALUE=VALUE_U_$$GET1^DIQ(90620,TIEN_",",".11","I")_U
  1. .. ;
  1. .. D FND
  1. Q
  1. ;
  1. FND ; Check for template
  1. NEW DA,IENS,TEMPL,LYIEN,DOR,LIST
  1. S TEMPL=""
  1. I OWNR'=DUZ D
  1. . S DA=$O(^BQICARE(OWNR,1,PLIEN,30,DUZ,4,"C",CTYP,""))
  1. . I DA="" Q
  1. . S DA(3)=OWNR,DA(2)=PLIEN,DA(1)=DUZ,IENS=$$IENS^DILF(.DA)
  1. . S TEMPL=$$GET1^DIQ(90505.34,IENS,.01,"E")
  1. I OWNR=DUZ D
  1. . S DA=$O(^BQICARE(OWNR,1,PLIEN,4,"C",CTYP,""))
  1. . I DA="" Q
  1. . S DA(2)=OWNR,DA(1)=PLIEN,IENS=$$IENS^DILF(.DA)
  1. . S TEMPL=$$GET1^DIQ(90505.14,IENS,.01,"E")
  1. ;
  1. ; If template, use it
  1. I TEMPL'="" D G FIN
  1. . ;S LYIEN=$$DEF^BQILYUTL(OWNR,"M")
  1. . S LYIEN=$$TPN^BQILYUTL(DUZ,TEMPL)
  1. . I LYIEN="" Q
  1. . S DOR=""
  1. . F S DOR=$O(^BQICARE(DUZ,15,LYIEN,1,"C",DOR)) Q:DOR="" D
  1. .. S IEN=""
  1. .. F S IEN=$O(^BQICARE(DUZ,15,LYIEN,1,"C",DOR,IEN)) Q:IEN="" D
  1. ... S CODE=$P(^BQICARE(DUZ,15,LYIEN,1,IEN,0),U,1)
  1. ... S GIEN=$O(^BQI(90506.1,"B",CODE,"")) I GIEN="" Q
  1. ... S STVW=GIEN
  1. ... D CVAL
  1. ... S VALUE=VALUE_VAL_"^"
  1. ... S HEADR=HEADR_HDR_"^"
  1. ;
  1. ; If no template, check for customized
  1. I OWNR=DUZ D
  1. . S CIEN=$O(^BQICARE(OWNR,1,PLIEN,23,"B",CARE,""))
  1. . I CIEN'="" D
  1. .. S IEN=0
  1. .. I $O(^BQICARE(OWNR,1,PLIEN,23,CIEN,1,IEN))="" D DEF Q
  1. .. F S IEN=$O(^BQICARE(OWNR,1,PLIEN,23,CIEN,1,IEN)) Q:'IEN D
  1. ... S GIEN=$P(^BQICARE(OWNR,1,PLIEN,23,CIEN,1,IEN,0),"^",1) Q:GIEN=""
  1. ... ;S STVW=GIEN
  1. ... S STVW=$O(^BQI(90506.1,"B",GIEN,"")) Q:STVW=""
  1. ... D CVAL
  1. ... S VALUE=VALUE_VAL_"^"
  1. ... S HEADR=HEADR_HDR_"^"
  1. . ;
  1. . ; If no customized, use default
  1. . I CIEN="" D DEF
  1. ;
  1. I OWNR'=DUZ D
  1. . S CIEN=$O(^BQICARE(OWNR,1,PLIEN,30,DUZ,23,"B",CARE,""))
  1. . I CIEN'="" D
  1. .. S IEN=0
  1. .. F S IEN=$O(^BQICARE(OWNR,1,PLIEN,30,DUZ,23,CIEN,1,IEN)) Q:'IEN D
  1. ... S GIEN=$P(^BQICARE(OWNR,1,PLIEN,30,DUZ,23,CIEN,1,IEN,0),"^",1)
  1. ... ;S STVW=GIEN
  1. ... S STVW=$O(^BQI(90506.1,"B",GIEN,"")) Q:STVW=""
  1. ... D CVAL
  1. ... S VALUE=VALUE_VAL_"^"
  1. ... S HEADR=HEADR_HDR_"^"
  1. . I CIEN="" D DEF
  1. ;
  1. FIN ; Finish
  1. S HEADR=$$TKO^BQIUL1(HEADR,"^")
  1. S VALUE=$$TKO^BQIUL1(VALUE,"^")
  1. ;
  1. I DFN="" S VALUE=""
  1. ;
  1. I II=0 S @DATA@(II)=HEADR_$C(30)
  1. I VALUE'="" D
  1. . I $P($G(@DATA@(II)),$C(30),1)'=VALUE S II=II+1,@DATA@(II)=VALUE_$C(30)
  1. I $G(@DATA@(0))="" S @DATA@(0)=HEADR_$C(30)
  1. Q
  1. ;
  1. CVAL ; Get demographic values
  1. ;Parameters
  1. ; FIL = FileMan file number
  1. ; FLD = FileMan field number
  1. ; EXEC = If an executable is needed to determine value
  1. ; HDR = Header value
  1. ;the executable expects the value to be returned in variable VAL
  1. NEW FIL,FLD,EXEC,RCODE,RGIEN,RIEN,RHDR,MVALUE,CODE
  1. S FIL=$$GET1^DIQ(90506.1,STVW_",",.05,"E")
  1. S FLD=$$GET1^DIQ(90506.1,STVW_",",.06,"E")
  1. S EXEC=$$GET1^DIQ(90506.1,STVW_",",1,"E")
  1. S HDR=$$GET1^DIQ(90506.1,STVW_",",.08,"E")
  1. I $G(DFN)="" S VAL="" Q
  1. ;
  1. I $G(EXEC)'="" X EXEC Q
  1. I FIL'="",FLD'="" S VAL=$$GET1^DIQ(FIL,DFN_",",FLD,"E")
  1. Q
  1. ;
  1. S RCODE=$$GET1^DIQ(90506.1,STVW_",",.01,"E")
  1. S RGIEN=$O(^BQI(90506.3,"AC",CRIEN,"")),VAL=""
  1. I RGIEN'="" D Q:VAL'=""
  1. . S RIEN=$O(^BQI(90506.3,RGIEN,10,"AC",RCODE,""))
  1. . I RIEN'="",$P($G(^BQI(90506.3,RGIEN,10,RIEN,1)),U,1)="M" D Q
  1. .. S RHDR=$P(^BQI(90506.3,RGIEN,10,RIEN,0),U,2),MVALUE=""
  1. .. NEW SNAME,SRIEN,SORD,SXREF,SIEN
  1. .. S SNAME=$P(^BQI(90506.3,RGIEN,10,RIEN,0),U,1)
  1. .. S SRIEN=$O(^BQI(90506.3,"B",SNAME,"")) I SRIEN="" Q
  1. .. S SORD="",SXREF=$S($D(^BQI(90506.3,SRIEN,10,"AF")):"AF",1:"C")
  1. .. F S SORD=$O(^BQI(90506.3,SRIEN,10,SXREF,SORD)) Q:SORD="" D
  1. ... S SIEN=""
  1. ... F S SIEN=$O(^BQI(90506.3,SRIEN,10,SXREF,SORD,SIEN)) Q:SIEN="" D
  1. .... I $P(^BQI(90506.3,SRIEN,10,SIEN,0),U,4)'="S" Q
  1. .... S CODE=$P(^BQI(90506.3,SRIEN,10,SIEN,0),U,7) I CODE="" Q
  1. .... S STVW=$O(^BQI(90506.1,"B",CODE,"")) I STVW="" Q
  1. .... I $$GET1^DIQ(90506.1,STVW_",",.1,"I")=1 Q
  1. .... NEW FIL,FLD,EXEC
  1. .... S FIL=$$GET1^DIQ(90506.1,STVW_",",.05,"E")
  1. .... S FLD=$$GET1^DIQ(90506.1,STVW_",",.06,"E")
  1. .... S EXEC=$$GET1^DIQ(90506.1,STVW_",",1,"E")
  1. .... S HDR=RHDR
  1. .... I $G(DFN)="" S VAL="" Q
  1. .... ;
  1. .... I $G(EXEC)'="" X EXEC S VAL=VAL_$S(VAL'="":$C(10),1:"") Q
  1. .... I FIL'="",FLD'="" S VAL=$$GET1^DIQ(FIL,DFN_",",FLD,"E")
  1. .... S VALUE=VALUE_VAL_$S(VAL'="":$C(10),1:"")
  1. .... S VAL=VALUE
  1. ... S MVALUE=MVALUE_$$TKO^BQIUL1(VAL,$C(10))
  1. ... ;S MVALUE=MVALUE_VAL
  1. .. S VAL=MVALUE
  1. ;
  1. I FIL'="",FLD'="" S VAL=$$GET1^DIQ(FIL,DFN_",",FLD,"E")
  1. Q
  1. ;
  1. ERR ;
  1. D ^%ZTER
  1. NEW Y,ERRDTM
  1. S Y=$$NOW^XLFDT() X ^DD("DD") S ERRDTM=Y
  1. S BMXSEC="Recording that an error occurred at "_ERRDTM
  1. S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. DEF ; Default list of fields
  1. NEW CRIEN,TYP,ORD,IEN,STVW,DEFF
  1. ; Check for any alternate display order which trumps source display order
  1. S CRIEN=$$FIND1^DIC(90506.5,"","B",CARE,"","","ERROR")
  1. S TYP=$P(^BQI(90506.5,CRIEN,0),U,2)
  1. S ORD=""
  1. F S ORD=$O(^BQI(90506.1,"AF",TYP,ORD)) Q:ORD="" D
  1. . S IEN=""
  1. . F S IEN=$O(^BQI(90506.1,"AF",TYP,ORD,IEN)) Q:IEN="" D
  1. .. I $$GET1^DIQ(90506.1,IEN_",",.1,"I")=1 Q
  1. .. I $$GET1^DIQ(90506.1,IEN_",",3.04,"I")'="O" D
  1. ... S STVW=IEN
  1. ... D CVAL
  1. ... S VALUE=VALUE_VAL_"^"
  1. ... S HEADR=HEADR_HDR_"^"
  1. ;
  1. S TYP="D",ORD=""
  1. F S ORD=$O(^BQI(90506.1,"AD",TYP,ORD)) Q:ORD="" D
  1. . S IEN=""
  1. . F S IEN=$O(^BQI(90506.1,"AD",TYP,ORD,IEN)) Q:IEN="" D
  1. .. I $$GET1^DIQ(90506.1,IEN_",",.1,"I")=1 Q
  1. .. I $$GET1^DIQ(90506.1,IEN_",",3.04,"I")'="O" D
  1. ... S STVW=IEN
  1. ... D CVAL
  1. ... S VALUE=VALUE_VAL_"^"
  1. ... S HEADR=HEADR_HDR_"^"
  1. ;
  1. NEW CRIEN,TYP,ORD,IEN,STVW
  1. S CRIEN=$$FIND1^DIC(90506.5,"","B",CARE,"","","ERROR")
  1. S TYP=$P(^BQI(90506.5,CRIEN,0),U,2)
  1. S ORD=""
  1. F S ORD=$O(^BQI(90506.1,"AD",TYP,ORD)) Q:ORD="" D
  1. . S IEN=""
  1. . F S IEN=$O(^BQI(90506.1,"AD",TYP,ORD,IEN)) Q:IEN="" D
  1. .. I $$GET1^DIQ(90506.1,IEN_",",.1,"I")=1 Q
  1. .. I $$GET1^DIQ(90506.1,IEN_",",3.04,"I")'="O" D
  1. ... S STVW=IEN
  1. ... D CVAL
  1. ... S VALUE=VALUE_VAL_"^"
  1. ... S HEADR=HEADR_HDR_"^"
  1. Q
  1. ;