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

BJPNGPIP.m

Go to the documentation of this file.
  1. BJPNGPIP ;GDIT/HS/BEE-Prenatal Care Module Problem List ; 08 May 2012 12:00 PM
  1. ;;2.0;PRENATAL CARE MODULE;**3,7,8**;Feb 24, 2015;Build 25
  1. ;
  1. Q
  1. ;
  1. PIP(DATA,DFN,VIEN,PIPLST) ;EP - BJPN GET PIP
  1. ;
  1. ;This RPC returns the patient PIP (PREGNANCY ISSUES AND PROBLEMS)
  1. ;
  1. ;Input: DFN - Patient IEN
  1. ; VIEN (optional) - Visit IEN
  1. ; PIPLST (optional) - List of specific entries to return ($c(28) separated)
  1. ;
  1. NEW UID,II,RET,BGO,TMP,B,P,T,PRBIEN,VDT,I,PC,PPLST
  1. ;
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BJPNPRL",UID))
  1. K @DATA
  1. I $G(DT)=""!($G(U)="") D DT^DICRW
  1. ;
  1. S II=0
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BJPNGPIP D UNWIND^%ZTER" ; SAC 2009 2.2.3.17
  1. ;
  1. ;Verify DFN was entered
  1. I $G(DFN)="" G XPIP
  1. S VIEN=$G(VIEN,"")
  1. ;
  1. ;Set up Header
  1. S @DATA@(II)="I00010PIPIEN^I00010PRBIEN^T00012PRIORITY^T00001PIP_STATUS^T00025SCOPE"
  1. S @DATA@(II)=@DATA@(II)_"^D00030LM_DT^T00050LM_BY^T00010IPL_STS^T00120ICD^T04096HOVER_ICD"
  1. S @DATA@(II)=@DATA@(II)_"^T00160PROVIDER_TEXT^T00360PROVIDER_NARRATIVE^T04096LAST_GOAL"
  1. S @DATA@(II)=@DATA@(II)_"^T04096LAST_CARE_PLAN^T04096LAST_VISIT_INSTRUCTION"
  1. S @DATA@(II)=@DATA@(II)_"^I00010HIDE_PRV^T00035PRV^D00015DEFINITIVE_EDD^T00001POV"
  1. S @DATA@(II)=@DATA@(II)_"^T00001INPATIENT_POV^T00001PRIMARY^T00001PATIENT_TYPE^T00001POV_DISP"
  1. S @DATA@(II)=@DATA@(II)_"^T00030ONSET_DT^T00050LOCATION^I00010POV_IEN^T04096LAST_OB"_$C(30)
  1. ;
  1. ;Get the visit date or default to DT if visit not passed in
  1. I $G(VIEN)]"" S VDT=$P($$GET1^DIQ(9000010,VIEN_",",".01","I"),".")
  1. S:$G(VDT)="" VDT=DT
  1. ;
  1. ;Call EHR API and format results into usable data
  1. D COMP^BJPNUTIL(DFN,UID,VIEN)
  1. S TMP=$NA(^TMP("BJPNIPL",UID)) ;Define compiled data reference
  1. ;
  1. ;Assemble Specific PIP List
  1. S PIPLST=$G(PIPLST,"") F I=1:1:$L(PIPLST,$C(28)) S PC=$P(PIPLST,$C(28),I) I PC]"" S PPLST(PC)=""
  1. ;
  1. ;Loop through problems for patient
  1. S PRBIEN="" F S PRBIEN=$O(^BJPNPL("F",DFN,PRBIEN)) Q:PRBIEN="" D
  1. . NEW BPIEN
  1. . S BPIEN="" F S BPIEN=$O(^BJPNPL("F",DFN,PRBIEN,BPIEN)) Q:BPIEN="" D
  1. .. NEW DEL,DESCID,CONCID,DESCTM,PTEXT,PNARR,BGO,API,XPRI,XSTS,XLMDT,XLMBY,IPLSTS,PRIMARY,DPOV,CDEL
  1. .. NEW ICD,ADDICD,ICDCNT,ADICD,HICD,GGO,CGO,VGO,GOAL,CARE,INST,DEDD,POV,IPOV,ITYPE,PRV,XPRV,XSCO
  1. .. NEW ONSET,LOC,PVIEN,TGO,CPGSTS,VOB,OB,X1,X2,X,DEDD,BRNG
  1. .. ;
  1. .. ;Handle specific PIP requests
  1. .. I $D(PPLST),'$D(PPLST(BPIEN)) Q
  1. .. ;
  1. .. ;Skip deletes
  1. .. S DEL=$$GET1^DIQ(90680.01,BPIEN_",",2.01,"I") Q:DEL]"" ;PIP Delete
  1. .. S DEL=$$GET1^DIQ(9000011,PRBIEN_",",2.02,"I") I DEL]"" D Q ;IPL Delete
  1. ... ;
  1. ... ;If deleted on IPL, need to delete in PIP
  1. ... NEW BJPNUPD,ERROR
  1. ... S BJPNUPD(90680.01,BPIEN_",",2.01)=$$GET1^DIQ(9000011,PRBIEN_",",2.01,"I") ;Deleted By
  1. ... S BJPNUPD(90680.01,BPIEN_",",2.02)=$$GET1^DIQ(9000011,PRBIEN_",",2.02,"I") ;Del Dt/Tm
  1. ... S BJPNUPD(90680.01,BPIEN_",",2.03)=$$GET1^DIQ(9000011,PRBIEN_",",2.03,"I") ;Del Rsn
  1. ... S BJPNUPD(90680.01,BPIEN_",",2.04)=$$GET1^DIQ(9000011,PRBIEN_",",2.04,"I") ;Del Other
  1. ... D FILE^DIE("","BJPNUPD","ERROR")
  1. .. ;
  1. .. ;Retrieve the entry from the API results
  1. .. S BGO=$O(@TMP@("P",PRBIEN,"")) Q:BGO="" ;Quit if no IPL entry
  1. .. S API=$G(@TMP@("P",PRBIEN,BGO)) Q:API=""
  1. .. ;
  1. .. ;SNOMED DescId and ConcId
  1. .. S DESCID=$P(API,U,4)
  1. .. S:DESCID="" DESCID=$$GET1^DIQ(9000011,PRBIEN_",",80002,"I") Q:DESCID=""
  1. .. S DESCTM=$P($$DESC^BSTSAPI(DESCID_"^^1"),U,2) Q:DESCTM=""
  1. .. S CONCID=$P(API,U,3)
  1. .. S:CONCID="" CONCID=$$GET1^DIQ(9000011,PRBIEN_",",80001,"I") Q:CONCID=""
  1. .. ;
  1. .. ;PIP Priority
  1. .. S XPRI=$$GET1^DIQ(90680.01,BPIEN_",",.06,"E")
  1. .. ;
  1. .. ;Status
  1. .. S XSTS=$$GET1^DIQ(90680.01,BPIEN_",",.08,"E")
  1. .. ;
  1. .. ;Scope
  1. .. S XSCO=$$GET1^DIQ(90680.01,BPIEN_",",.07,"E")
  1. .. ;
  1. .. ;Last Modified Date
  1. .. S XLMDT=$$FMTE^BJPNPRL($$GET1^DIQ(9000011,PRBIEN_",",.03,"I"))
  1. .. ;
  1. .. ;Last Modified By
  1. .. S XLMBY=$$GET1^DIQ(9000011,PRBIEN_",",.14,"E")
  1. .. ;
  1. .. ;Get Window Start
  1. .. S DEDD=$$GET1^DIQ(90680.01,BPIEN_",",.09,"I")
  1. .. S X1=DEDD,X2=-280 D C^%DTC S BRNG=X
  1. .. ;
  1. .. ;IPL Status - Convert manually lower case can be displayed
  1. .. S IPLSTS=$P(API,U,6)
  1. .. S:IPLSTS="" IPLSTS=$$GET1^DIQ(9000011,PRBIEN_",",.12,"E")
  1. .. S IPLSTS=$S(IPLSTS="CHRONIC":"Chronic",IPLSTS="INACTIVE":"Inactive",IPLSTS="D":"DELETED",IPLSTS="SUB-ACUTE":"Sub-acute",IPLSTS="EPISODIC":"Episodic",IPLSTS="SOCIAL":"Social/Environmental",IPLSTS="ROUTINE/ADMIN":"Routine/Admin",1:"")
  1. .. ;
  1. .. ;Handle Personal Hx
  1. .. I $$GET1^DIQ(9000011,PRBIEN_",",.04,"I")="P" S IPLSTS="Personal Hx"
  1. .. ;
  1. .. ;ICD Information - Pull primary and additional ICD values
  1. .. S ICD=$P(API,U,9)
  1. .. S ADDICD=$P(API,U,13)
  1. .. I ADDICD]"" F ICDCNT=1:1:$L(ADDICD,"|") S ADICD=$P(ADDICD,"|",ICDCNT) I ADICD]"" S ICD=ICD_$S(ICD]"":"|",1:"")_ADICD
  1. .. ;
  1. .. ;ICD Hover field
  1. .. D
  1. ... NEW ADV,STS
  1. ... ;
  1. ... ;Only return if in ICD10
  1. ... I '$$ICD10^BSTSUTIL(DT) S HICD="No ICD9 mapping advice available" Q
  1. ... ;
  1. ... ;Get the mapping advice
  1. ... S STS=$$I10ADV^BSTSAPI("ADV",CONCID_"^1")
  1. ... S (HICD,ADV)="" F S ADV=$O(ADV(ADV)) Q:ADV="" S HICD=HICD_$S($L(HICD)]"":$C(13)_$C(10),1:"")_ADV(ADV)
  1. ... S:HICD HICD="No ICD10 mapping advice available"
  1. .. ;
  1. .. ;Location
  1. .. S LOC=$$GET1^DIQ(9000011,PRBIEN_",",.06,"I")
  1. .. ;
  1. .. ;Onset Date
  1. .. S ONSET=$$GET1^DIQ(9000011,PRBIEN_",",.13,"I")
  1. .. I ONSET]"" D
  1. ... I $E(ONSET,4,7)="0000" S ONSET="20"_$E(ONSET,2,3) Q ;Year only
  1. ... I $E(ONSET,6,7)="00" S ONSET=+$E(ONSET,4,5)_"/20"_$E(ONSET,2,3) Q ;Month/Year
  1. ... S ONSET=$$FMTE^BJPNPRL(ONSET,"5D")
  1. .. ;
  1. .. ;Provider Text
  1. .. S PNARR=$P(API,U,8)
  1. .. S PTEXT=$P(PNARR," | ",2)
  1. .. ;
  1. .. ;Reset Can Delete flag
  1. .. S CDEL="Y"
  1. .. ;
  1. .. ;Get latest Goal note
  1. .. S GOAL=""
  1. .. S GGO="" F S GGO=$O(@TMP@("G",PRBIEN,GGO)) Q:GGO="" D Q:GOAL]""
  1. ... ;
  1. ... ;Skip inactive goals but mark as cannot delete
  1. ... S CPGSTS=$P($G(@TMP@("G",PRBIEN,GGO,0)),U,6)
  1. ... I CPGSTS="I" S CDEL="" Q
  1. ... ;
  1. ... ;Only include active
  1. ... I CPGSTS'="A" Q
  1. ... ;
  1. ... NEW NIEN,ND,BY,WHEN
  1. ... S ND=$G(@TMP@("G",PRBIEN,GGO,0))
  1. ... S BY=$P(ND,U,4) ;BY
  1. ... S WHEN=$P($P(ND,U,5)," ") ;WHEN
  1. ... S NIEN=0 F S NIEN=$O(@TMP@("G",PRBIEN,GGO,NIEN)) Q:NIEN="" D
  1. .... NEW NNT,L
  1. .... S NNT=$P($G(@TMP@("G",PRBIEN,GGO,NIEN)),U,2)
  1. .... S L=$E(GOAL,$L(GOAL))
  1. .... S GOAL=GOAL_$S(GOAL]"":$C(13)_$C(10),1:"")_NNT
  1. ... I GOAL]"",BY]"" S GOAL=GOAL_$C(13)_$C(10)_"Modified by: "_BY_" "_WHEN
  1. ... S CDEL=""
  1. .. ;
  1. .. ;Get latest Care Plan note
  1. .. S CARE=""
  1. .. S CGO="" F S CGO=$O(@TMP@("C",PRBIEN,CGO)) Q:CGO="" D Q:CARE]""
  1. ... ;
  1. ... ;Skip inactive care plans but mark as cannot delete
  1. ... S CPGSTS=$P($G(@TMP@("C",PRBIEN,CGO,0)),U,6)
  1. ... I CPGSTS="I" S CDEL="" Q
  1. ... ;
  1. ... ;Only include active
  1. ... I CPGSTS'="A" Q
  1. ... ;
  1. ... NEW NIEN,ND,BY,WHEN
  1. ... S ND=$G(@TMP@("C",PRBIEN,CGO,0))
  1. ... S BY=$P(ND,U,4) ;BY
  1. ... S WHEN=$P($P(ND,U,5)," ") ;WHEN
  1. ... S NIEN=0 F S NIEN=$O(@TMP@("C",PRBIEN,CGO,NIEN)) Q:NIEN="" D
  1. .... NEW NNT,L,BY
  1. .... S ND=$G(@TMP@("C",PRBIEN,CGO,0))
  1. .... S NNT=$P($G(@TMP@("C",PRBIEN,CGO,NIEN)),U,2)
  1. .... S L=$E(CARE,$L(CARE))
  1. .... S CARE=CARE_$S(CARE]"":$C(13)_$C(10),1:"")_NNT
  1. ... I CARE]"",BY]"" S CARE=CARE_$C(13)_$C(10)_"Modified by: "_BY_" "_WHEN
  1. ... S CDEL=""
  1. .. ;
  1. .. ;Get latest V Visit Instruction
  1. .. S VGO=$O(@TMP@("I",PRBIEN,""))
  1. .. S INST="" I VGO]"" S INST=$$LVI^BJPNGNOT(PRBIEN,TMP,VGO,BRNG,.CDEL)
  1. .. ;
  1. .. ;Get latest V OB Note
  1. .. S VOB=$O(@TMP@("O",PRBIEN,""))
  1. .. S OB="" I VOB]"" S OB=$$LOB^BJPNGNOT(PRBIEN,TMP,VOB,BRNG,.CDEL)
  1. .. ;
  1. .. ;Treatment Regimen
  1. .. S TGO=$O(@TMP@("T",PRBIEN,"")) I TGO]"" S CDEL=""
  1. .. ;
  1. .. ;Visit POV
  1. .. S (IPOV,POV,ITYPE,DPOV)="" I VIEN]"" D
  1. ... S ITYPE=$$GET1^DIQ(9000010,VIEN_",",.07,"I") Q:ITYPE=""
  1. ... S ITYPE=$S(ITYPE="H":"H",1:"A")
  1. ... I $O(^AUPNPROB(PRBIEN,14,"B",VIEN,"")) S POV="Y"
  1. ... I $O(^AUPNPROB(PRBIEN,15,"B",VIEN,"")) S IPOV="Y"
  1. .. I (POV="Y")!(IPOV="Y") S DPOV="Y"
  1. .. ;
  1. .. ;Ever a POV - needed for deleting permission
  1. .. I $O(^AUPNPROB(PRBIEN,14,"B",""))]"" S CDEL=""
  1. .. I $O(^AUPNPROB(PRBIEN,15,"B",""))]"" S CDEL=""
  1. .. ;
  1. .. ;Get Primary/Secondary value
  1. .. S PRIMARY=$P(API,U,20)
  1. .. ;
  1. .. ;Get the V POV IEN
  1. .. S PVIEN=$P(API,U,21)
  1. .. ;
  1. .. ;Definitive EDD
  1. .. S DEDD=$$FMTE^BJPNPRL($$GET1^DIQ(90680.01,BPIEN_",",.09,"I"))
  1. .. ;
  1. .. ;PRV fields
  1. .. S (PRV,XPRV)=""
  1. .. S PRV=$$PPRV^BJPNPKL(VIEN)
  1. .. S:PRV]"" XPRV=$$GET1^DIQ(200,PRV_",",.01,"E")
  1. .. ;
  1. .. ;Set up entry
  1. .. S II=II+1,@DATA@(II)=BPIEN_U_PRBIEN_U_XPRI_U_XSTS_U_XSCO_U_XLMDT_U_XLMBY_U_IPLSTS
  1. .. S @DATA@(II)=@DATA@(II)_U_ICD_U_HICD_U_PTEXT_U_PNARR_U_GOAL_U_CARE_U_INST_U_PRV_U_XPRV
  1. .. S @DATA@(II)=@DATA@(II)_U_DEDD_U_POV_U_IPOV_U_PRIMARY_U_ITYPE_U_DPOV
  1. .. S @DATA@(II)=@DATA@(II)_U_ONSET_U_LOC_U_PVIEN_U_OB_$C(30)
  1. ;
  1. XPIP S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. NOTES(DATA,DFN,PRBIEN,ITYPE,VIEN) ;EP - BJPN GET PR NOTES
  1. ;
  1. ;Get BJPN CARE PLANS, GOALS, VISIT INSTRUCTIONS
  1. ;
  1. ;This RPC returns the CVGT information for one problem - it is used on the
  1. ;PIP add/edit screen to populate the bottom CVGT section
  1. ;
  1. ;Input: DFN - Patient IEN
  1. ; PRBIEN - Problem IEN
  1. ; ITYPE - (C) Care Plans, (G) Goals, (I) Visit Instructions, (T) Treatment Plan/Education
  1. ; VIEN - If passed in, limit visit instructions and treatment reg returned to that visit
  1. ;
  1. S DFN=$G(DFN),PRBIEN=$G(PRBIEN),ITYPE=$G(ITYPE),VIEN=$G(VIEN)
  1. I ITYPE="" S BMXSEC="Null/Invalid TYPE value" Q
  1. ;
  1. NEW UID,II,SORT,PC,PARY,NEDT,TMP,SIGN,CNT,MDT,BGO,DEL,TYPE,TPC
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BJPNGPIP",UID))
  1. K @DATA
  1. I $G(DT)=""!($G(U)="") D DT^DICRW
  1. ;
  1. S II=0
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BJPNGPIP D UNWIND^%ZTER" ; SAC 2009 2.2.3.17
  1. ;
  1. S @DATA@(II)="T00001TYPE^I00010PRBIEN^I00010GCIIEN^I00010VIEN^D00030VISIT_DT^T00001NOTE_STATUS"
  1. S @DATA@(II)=@DATA@(II)_"^D00030LAST_MODIFIED^T00050MODIFIED_BY^T00160NOTE^I00010HIDE_DUZ^T00001SIGNED"_$C(30)
  1. ;
  1. ;For treatment request, include education as well
  1. I ITYPE["T",ITYPE'["E" S ITYPE=ITYPE_"~E"
  1. ;
  1. ;Verify DFN
  1. I DFN="" G XNOTES
  1. ;
  1. ;Definitive EDD date range check
  1. D GETPAR^CIAVMRPC(.NEDT,"BJPN POST DEDD DAYS","SYS",1,"I","")
  1. ;
  1. ;If blank default to 70
  1. I +$G(NEDT)<1 S NEDT=70
  1. ;
  1. ;Call EHR API and format results into usable data
  1. S TMP=$NA(^TMP("BJPNIPL",UID)) ;Define compiled data reference
  1. D COMP^BJPNUTIL(DFN,UID)
  1. ;
  1. ;Skip deletes
  1. S DEL=$$GET1^DIQ(9000011,PRBIEN_",",2.02,"I") I DEL]"" Q ;IPL Delete
  1. ;
  1. S CNT=0
  1. ;
  1. ;Loop through compiled results for type
  1. F TPC=1:1:$L(ITYPE,"~") S TYPE=$P(ITYPE,"~",TPC) I TYPE]"" S BGO="" F S BGO=$O(@TMP@(TYPE,PRBIEN,BGO),-1) Q:BGO="" D
  1. . ;
  1. . NEW APIRES,VISIT,DEDD,BRNG,ERNG,NIEN,X1,X2,X,VDT
  1. . NEW DTTM,MDBY,ILMBY,NOTE,NSTS,SIGN
  1. . ;
  1. . S SIGN=""
  1. . S APIRES=$G(@TMP@(TYPE,PRBIEN,BGO,0)) Q:APIRES=""
  1. . ;
  1. . ;Pull Visit - If V VISIT INSTRUCTIONS (GOALS and CARE PLANS are not visit driven)
  1. . S (VISIT,VDT)=""
  1. . I (TYPE="I")!(TYPE="O") S VISIT=$P(APIRES,U,9),VDT=$P(APIRES,U,4)
  1. . S:TYPE="T" VISIT=$P(APIRES,U,10),VDT=$P(APIRES,U,5)
  1. . I TYPE="E" D
  1. .. NEW VEDIEN
  1. .. S VEDIEN=$P(APIRES,U,6) Q:VEDIEN=""
  1. .. S VISIT=$$GET1^DIQ(9000010.16,VEDIEN_",",.03,"I")
  1. .. S VDT=$$GET1^DIQ(9000010,VISIT,.01,"I")
  1. . ;
  1. . ;Filter on visit
  1. . I ((TYPE="I")!(TYPE="T")!(TYPE="E"))!((TYPE="O")),VIEN]"",VIEN'=VISIT Q
  1. . ;
  1. . ;Skip Inactive Goals/Care Plans
  1. . I ((TYPE="G")!(TYPE="C")),$P(APIRES,U,6)'="A" Q
  1. . ;
  1. . ;Note IEN (Pointer to entry)
  1. . I TYPE'="E" S NIEN=$P(APIRES,U,2)
  1. . E S NIEN=$P(APIRES,U,6)
  1. . Q:NIEN=""
  1. . ;
  1. . ;Pull Definitive EDD
  1. . S DEDD=$$GET1^DIQ(9000017,DFN_",",1311,"I")
  1. . S X1=DEDD,X2=-280 D C^%DTC S BRNG=X
  1. . S X1=DEDD,X2=NEDT D C^%DTC S ERNG=X
  1. . ;
  1. . ;Get note date/time entered and by - V VISIT INSTRUCTIONS/V OB
  1. . S (DTTM,ILMBY)=""
  1. . I TYPE="I" D
  1. .. S DTTM=$$GET1^DIQ(9000010.58,NIEN_",",1216,"I")
  1. .. S ILMBY=$$GET1^DIQ(9000010.58,NIEN_",",1217,"I")
  1. .. S SIGN=$P(APIRES,U,13)
  1. . I TYPE="O" D
  1. .. S DTTM=$$GET1^DIQ(9000010.43,NIEN_",",1216,"I")
  1. .. S ILMBY=$$GET1^DIQ(9000010.43,NIEN_",",1217,"I")
  1. .. S SIGN=$P(APIRES,U,13)
  1. . ;
  1. . ;Get note date/time entered and by - CARE PLAN
  1. . I TYPE'="I",TYPE'="T",TYPE'="E",TYPE'="O" D
  1. .. NEW IENS,DA
  1. .. S DA=$O(^AUPNCPL(NIEN,11,"B","A",""),-1) Q:DA=""
  1. .. S DA(1)=NIEN,IENS=$$IENS^DILF(.DA)
  1. .. S DTTM=$$GET1^DIQ(9000092.11,IENS,".03","I")
  1. .. S ILMBY=$$GET1^DIQ(9000092.11,IENS,".02","I")
  1. .. S SIGN=$P(APIRES,U,7)
  1. . ;
  1. . ;Get treatment plan date/time and by - V TREATMENT/REGIMEN
  1. . I TYPE="T" D
  1. .. S DTTM=$$GET1^DIQ(9000010.61,NIEN_",",1216,"I")
  1. .. S ILMBY=$$GET1^DIQ(9000010.61,NIEN_",",1217,"I")
  1. . ;
  1. . ;Get education plan date/time and by - V PATIENT ED
  1. . I TYPE="E" D
  1. .. S DTTM=$$GET1^DIQ(9000010.16,NIEN_",",1216,"I")
  1. .. S ILMBY=$$GET1^DIQ(9000010.16,NIEN_",",1217,"I")
  1. . ;
  1. . Q:DTTM=""
  1. . S MDBY=$$GET1^DIQ(200,ILMBY_",",".01","E")
  1. . ;
  1. . ;Get Note
  1. . I TYPE="T" S NOTE=$P($G(@TMP@(TYPE,PRBIEN,BGO,0)),U,14)
  1. . E I TYPE="E" S NOTE=$P(APIRES,U,2)
  1. . E D
  1. .. S NOTE=""
  1. .. NEW NIEN
  1. .. S NIEN=0 F S NIEN=$O(@TMP@(TYPE,PRBIEN,BGO,NIEN)) Q:NIEN="" D
  1. ... NEW NNT,L
  1. ... S NNT=$P($G(@TMP@(TYPE,PRBIEN,BGO,NIEN)),U,2)
  1. ... S L=$E(NOTE,$L(NOTE))
  1. ... S NOTE=NOTE_$S(NOTE]"":$C(13)_$C(10),1:"")_NNT
  1. . Q:NOTE=""
  1. . ;
  1. . ;Note Status
  1. . S NSTS="A"
  1. . I DEDD]"",DTTM'<BRNG,DTTM'>ERNG S NSTS="C"
  1. . ;
  1. . ;Determined signed/unsigned
  1. . S SIGN=$S(TYPE="T":"",SIGN]"":"S",1:"U")
  1. . ;
  1. . ;Set up record
  1. . S CNT=CNT+1,SORT(DTTM,CNT)=$S(TYPE="E":"T",1:TYPE)_U_PRBIEN_U_NIEN_U_VISIT_U_VDT_U_NSTS_U_$$FMTE^BJPNPRL(DTTM)_U_MDBY_U_NOTE_U_ILMBY_U_SIGN
  1. ;
  1. ;Sort - Most recent first
  1. S DTTM="" F S DTTM=$O(SORT(DTTM),-1) Q:DTTM="" D
  1. . S CNT="" F S CNT=$O(SORT(DTTM,CNT),-1) Q:CNT="" D
  1. .. S II=II+1,@DATA@(II)=SORT(DTTM,CNT)_$C(30)
  1. ;
  1. XNOTES S II=II+1,@DATA@(II)=$C(31)
  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 II=II+1,@DATA@(II)=$C(31)
  1. Q