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

GMTSPLST.m

Go to the documentation of this file.
  1. GMTSPLST ; SLC/JER,KER,TC - Problem List ;07/02/13 09:56
  1. ;;2.7;Health Summary;**28,35,52,86,101**;Oct 20, 1995;Build 12
  1. ;
  1. ; External References
  1. ; DBIA 10011 ^DIWP
  1. ; DBIA 1183 GETLIST^GMPLHS
  1. ; DBIA 1573 $$DSMONE^LEXU
  1. ;
  1. ; Variable NEWed/KILLed Elsewhere
  1. ; DFN, GMPXICDF, GMPXNARR, GMTSNPG, GMTSQIT
  1. ;
  1. ACTIVE ; Get Active Problems
  1. N STATUS S STATUS="A" D MAIN Q
  1. INACT ; Get Inactive Problems
  1. N STATUS S STATUS="I" D MAIN Q
  1. ALL ; Get All Problems (Active and Inactive)
  1. N STATUS S STATUS="ALL" D MAIN Q
  1. MAIN ; Driver
  1. D GETLIST^GMPLHS(DFN,STATUS) Q:'$D(^TMP("GMPLHS",$J)) D SUBHDR D WRT K ^TMP("GMPLHS",$J) Q
  1. ;
  1. WRT ; Writes Problem List Component,X
  1. ;
  1. ; ^TMP("GMPLHS",$J,#,0)=
  1. ; Piece 1: Diagnosis
  1. ; 2: Date Last Modified
  1. ; 3: Site
  1. ; 4: Date Entered
  1. ; 5: Status
  1. ; 6: Date of Onset
  1. ; 7: Responsible Provider
  1. ; 8: Service
  1. ; 9: Service Abbreviation
  1. ; 10: Date Resolved
  1. ; 11: Clinic
  1. ; 12: Date Recorded
  1. ; 13: Problem - Lexicon Term
  1. ; 14: Exposure Combined String
  1. ; 15: SNOMED-CT Concept Code
  1. ; 16: SNOMED-CT Preferred Text
  1. ; 17: ICD-9-CM Code
  1. ; 18: ICD-9-CM Description
  1. ; 19: VHAT Concept Code
  1. ; 20: VHAT Preferred Text
  1. ; 21: Date of Interest
  1. ; 22: Coding System (of Primary diagnosis)
  1. ;
  1. ; ^TMP("GMPLHS",$J,#,#,"ICD9") Other multiple mapped ICD-9-CM codes
  1. ; ^TMP("GMPLHS",$J,#,"L") Lexicon Term
  1. ; ^TMP("GMPLHS",$J,#,"N") Provider Narrative
  1. ; ^TMP("GMPLHS",$J,#,"C",LOC,#,0)) Comments
  1. ;
  1. N GMREC,GMTSICL,GMTAB,LINE1,DIWL,GMTSTXTF
  1. S GMTSICL=32,DIWL=0,GMTAB=0,GMREC=0,GMTSTXTF=0
  1. F S GMREC=$O(^TMP("GMPLHS",$J,GMREC)) Q:GMREC'>0 D Q:$D(GMTSQIT)
  1. . N GMNODE,GMDIAG,GMDIAC,GMDIAT,GMDIAS,LASTMDT,STAT,ONSETDT,PROV,SERV,GMSCT,GMVHAT,GMTSDINT,GMTSCSYS
  1. . N RESDT,NARR,GMICD,GMDSM,GMDSMS,CODE,LEXI,LEX,PLIFN,ADDINFO,EXP,GMTSX,X,GMDIAC,GMDIAT,GMTSILBL
  1. . S (GMDIAC,GMDIAT)=""
  1. . S GMNODE=$G(^TMP("GMPLHS",$J,GMREC,0))
  1. . Q:GMNODE']""
  1. . S GMDIAG=$P(GMNODE,U),LASTMDT=$P(GMNODE,U,2),STAT=$P(GMNODE,U,5)
  1. . S GMTSDINT=$P(GMNODE,U,21),GMTSCSYS=$P(GMNODE,U,22),GMTSILBL=$S($G(GMTSCSYS)="ICD":"ICD-9-CM ",1:"ICD-10-CM ")
  1. . S X=LASTMDT D REGDT4^GMTSU S LASTMDT=X
  1. . S ONSETDT=$P(GMNODE,U,6),PROV=$P(GMNODE,U,7)
  1. . S RESDT=$P(GMNODE,U,10),GMICD="",GMSCT=$P(GMNODE,U,15),GMVHAT=$P(GMNODE,U,19)
  1. . S EXP=$P(GMNODE,U,14) S:$L(EXP) EXP=" ("_EXP_")"
  1. . I STAT="A",+ONSETDT S X=ONSETDT D REGDT4^GMTSU S ADDINFO="Onset "_X
  1. . I STAT="I",+RESDT S X=RESDT D REGDT4^GMTSU S ADDINFO="Resolved "_X
  1. . S GMPXICDF=$$UP($G(GMPXICDF))
  1. . S GMTSTXTF=$S(($G(GMPXICDF)="T")!($G(GMPXICDF)["TEXT ONLY"):1,1:0)
  1. . I $G(GMPXICDF)]"",($G(GMPXICDF)'="N")!($G(GMPXICDF)["NONE"),GMDIAG]"" D
  1. . . D GETICDDX^GMTSPXU1(.GMDIAG,$G(GMPXICDF),"",GMTSDINT,GMTSCSYS) S GMICD=GMDIAG
  1. . I $G(GMTSTXTF)=0 S GMDIAC=$P($G(GMICD),"-",1),GMDIAT=$P($G(GMICD),"-",2,299)
  1. . S LEX=$G(^TMP("GMPLHS",$J,GMREC,"L"))
  1. . S NARR=""
  1. . S:$G(GMPXNARR)'="N"!(LEX["Unresolved") NARR=$G(^TMP("GMPLHS",$J,GMREC,"N"))
  1. . S LEXI=+LEX,LEX=$P(LEX,"^",2) S:$$UP(LEX)["UNRESOLVED"!(+LEXI'>1) (LEXI,LEX)=""
  1. . S (CODE,GMDIAS,GMDSMS,GMDSM)="" S:+LEXI>0 GMDSM=$$DSMONE^LEXU(+LEXI)
  1. . S:GMDIAC["799.9" GMDSM=""
  1. . S:$L(GMDSM)>2&(GMDSM'[".") GMDSM=GMDSM_"."
  1. . S:$L(GMDIAC) GMDIAS="("_GMTSILBL_GMDIAC_")"
  1. . S:$L(GMDSM) GMDSMS="(DSM "_GMDSM_")"
  1. . S:$L(GMDIAC)&($L(GMDSM))&(GMDIAC=GMDSM) GMDIAS=GMDIAC,GMDSMS=""
  1. . I $G(^TMP("GMPLHS",$J,GMREC,0,"ICD9"))="" D
  1. . . S:$L(GMDIAC)&$S($L(GMSCT):1,$L(GMVHAT):1,1:0) GMDIAS=$S($L(GMSCT):"(SCT ",1:"(VHAT ")_GMSCT_") ("_GMTSILBL_GMDIAC_")"
  1. . E I $L(GMDIAC)&$S($L(GMSCT):1,$L(GMVHAT):1,1:0) D
  1. . . S GMDIAS=$S($L(GMSCT):"(SCT ",1:"(VHAT ")_GMSCT_") ("_GMTSILBL_GMDIAC
  1. . . N T S T=0 F S T=$O(^TMP("GMPLHS",$J,GMREC,T)) Q:'+T D
  1. . . . S GMDIAS=GMDIAS_"/"_$P($G(^TMP("GMPLHS",$J,GMREC,T,"ICD9")),U,1)
  1. . . S GMDIAS=GMDIAS_")"
  1. . S:$L(GMDIAS) CODE=GMDIAS S:$L(GMDSMS) CODE=CODE_" "_GMDSMS F Q:$E(CODE,1)'=" " S CODE=$E(CODE,2,$L(CODE))
  1. . S:$L(LEX)&($L(CODE)) LEX=LEX_" "_CODE
  1. . S:$L(GMDIAT)&($L(CODE)) GMICD=GMDIAT_" "_CODE
  1. . ; Unresolved or Unspecified
  1. . I GMDIAC["799.9",$L($G(NARR)) D
  1. . . N UNARR S UNARR=$$UP(NARR)
  1. . . I UNARR["UNKNOWN AND UNSPECIFIED"!(UNARR["UNKNOWN OR UNSPECIFIED")!(UNARR["MORBIDITY OR MORTALITY") D Q
  1. . . . S GMICD=GMDIAT_" "_CODE,NARR=""
  1. . . S GMICD=$$UP($E(NARR,1))_$E(NARR,2,$L(NARR))_" "_CODE
  1. . . S:$L(LEX) GMICD=LEX S NARR=""
  1. . ; Specified by Lexicon
  1. . I GMDIAC'["799.9",$L($G(LEX)) D
  1. . . S GMICD=LEX,NARR=""
  1. . ; Specified by Provider Narrative
  1. . I GMDIAC'["799.9",'$L($G(LEX)) D
  1. . . S:$L(NARR)&($$UP(GMDIAT)'=$$UP(NARR)) GMICD=$S($$UP($G(GMPXICDF))="C"!($$UP($G(GMPXICDF))="CODE ONLY"):"("_GMTSILBL_GMICD_"); ",$L($G(GMDIAT))<1:"",1:GMICD_"; ")_NARR S NARR=""
  1. . S:$G(IOST)["P-"&(EXP["MST") EXT=$$RM(EXP)
  1. . S:$L(GMICD)&($L(EXP)) GMICD=GMICD_EXP
  1. . S:$L(GMICD) GMICD=GMICD_$S($G(ADDINFO)]"":", "_ADDINFO,1:""),NARR=""
  1. . S GMICD=$$RF(GMICD)
  1. . D TXTFMT^GMTSPXU1(GMICD,$G(NARR),GMTSICL,GMTAB,DIWL)
  1. . I '$D(^UTILITY($J,"W")) Q
  1. . S GMTSX=0,LINE1=1
  1. . F S GMTSX=$O(^UTILITY($J,"W",DIWL,GMTSX)) Q:GMTSX'>0!$D(GMTSQIT) D
  1. . . D:LINE1 L1 D:'LINE1 LN S LINE1=0
  1. . D DC
  1. . K ^UTILITY($J,"W")
  1. . D CKP^GMTSUP Q:$D(GMTSQIT) D:GMTSNPG SUBHDR2 W !
  1. Q
  1. L1 ; Line #1 Problem, date, provider
  1. D CKP^GMTSUP Q:$D(GMTSQIT) D:GMTSNPG SUBHDR2 W:STATUS="ALL" STAT W ?3,$G(^UTILITY($J,"W",DIWL,GMTSX,0)),?53,LASTMDT,?65,$E(PROV,1,15),! Q
  1. LN ; Line >1 Problem (other)
  1. D CKP^GMTSUP Q:$D(GMTSQIT) D:GMTSNPG SUBHDR2 W ?3,$G(^UTILITY($J,"W",DIWL,GMTSX,0)),! Q
  1. ;
  1. DC ; Comments are displayed if there are any
  1. N LOC,GMR,NODE,DATE,X,UCNT,CNT,CMT,T,I S LOC="",CNT=0
  1. F S LOC=$O(^TMP("GMPLHS",$J,GMREC,"C",LOC)) Q:LOC']"" D Q:$D(GMTSQIT)
  1. . S (CNT,UCNT)=0 S:+($O(^TMP("GMPLHS",$J,GMREC,"C",LOC," "),-1))>1 UCNT=1
  1. . S GMR=0 F S GMR=$O(^TMP("GMPLHS",$J,GMREC,"C",LOC,GMR)) Q:+GMR'>0 D Q:$D(GMTSQIT)
  1. . . S NODE=$G(^TMP("GMPLHS",$J,GMREC,"C",LOC,GMR,0)) Q:NODE']""
  1. . . S CMT=$P(NODE,U) I $L($G(CMT)) D LC
  1. Q
  1. LC ; List Comments (unnumbered and numbered)
  1. S CNT=CNT+1 K ^UTILITY($J,"W") D:UCNT CF(CNT,CMT) D:'UCNT CF(0,CMT)
  1. I $D(^UTILITY($J,"W",0)) N I,T S I=0 F S I=$O(^UTILITY($J,"W",0,I)) Q:+I=0 D
  1. . S T=$$RT($G(^UTILITY($J,"W",0,I,0))) Q:'$L(T) D CKP^GMTSUP Q:$D(GMTSQIT) D:GMTSNPG SUBHDR2 W:I=1 ?3 W:I>1 ?7 W $G(T),!
  1. Q
  1. CF(GMC,GMT) ; Formats GMC (count) and GMT (text) together
  1. S GMC=+($G(GMC)),GMT=$G(GMT) Q:'$L(GMT) S GMT=$$LD(GMT)
  1. N GMCOL,DIWL,DIWR,DIWF,X S GMCOL=34,DIWL=0,DIWR=80-(GMCOL) K ^UTILITY($J,"W")
  1. S:+($G(GMC))=0 X=" "_GMT S:+($G(GMC))>0 X=$J(GMC,2)_". "_GMT D:$G(X)]"" ^DIWP
  1. Q
  1. ;
  1. SUBHDR ; Subheader for Problem List Component
  1. N NUM,TOT,NODE S NODE=$G(^TMP("GMPLHS",$J,STATUS,0)) S NUM=$P(NODE,U),TOT=$P(NODE,U,2)
  1. D CKP^GMTSUP Q:$D(GMTSQIT) S:TOT>NUM NUM=NUM_" of "_TOT W ?50,NUM_$S(STATUS="A":" Active",STATUS="I":" Inactive",1:"")_" Problems",!
  1. SUBHDR2 ; Will be written on new pages
  1. D CKP^GMTSUP Q:$D(GMTSQIT) W:STATUS="ALL" "ST" W ?3,"PROBLEM",?53,"LAST MOD",?65,"PROVIDER",! Q
  1. ;
  1. RM(X) ; Remove MST
  1. S X=$G(X) F Q:X'["MST" S X=$P(X,"MST",1)_$P(X,"MST",2)
  1. F Q:X'["//" S X=$P(X,"//",1)_"/"_$P(X,"//",2)
  1. F Q:$E(X,$L(X))'="/" S X=$E(X,1,($L(X)-1))
  1. F Q:$E(X,1)'="/" S X=$E(X,2,$L(X))
  1. Q X
  1. RF(X) ; Remove Leading Spaces/Punctuation
  1. F Q:$E(X,1)'=" " S X=$E(X,2,$L(X))
  1. F Q:$E(X,1)'=";" S X=$E(X,2,$L(X))
  1. F Q:$E(X,1)'=" " S X=$E(X,2,$L(X))
  1. S X=$$LD(X) Q X
  1. LD(X) ; Uppercase Leading Character
  1. Q $TR($E(X,1),"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")_$E(X,2,$L(X))
  1. RT(X) ; Right Trim Spaces
  1. S X=$G(X) F Q:$E(X,$L(X))'=" " S X=$E(X,1,($L(X)-1))
  1. Q X
  1. UP(X) ; Uppercase
  1. Q $TR(X,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")