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

AMQQREG.m

Go to the documentation of this file.
  1. AMQQREG ; IHS/CMI/THL - QUERY CMS REGISTER INTERFACE ;
  1. ;;2.0;IHS PCC SUITE;;MAY 14, 2009
  1. ;;UTILITY TO SELECT AND UTILIZE CMS REGISTER AS SUBJECT OF A QMAN
  1. ;;SEARCH
  1. ;-----
  1. EN N Y,AMQQ
  1. D EN1
  1. EXIT K AMQQQUIT
  1. Q
  1. EN1 D REG
  1. Q:$D(AMQQQUIT)
  1. D ACTIVE
  1. Q:$D(AMQQQUIT)
  1. D DX:AMQQCNAM["DIABET"
  1. Q:$D(AMQQQUIT)
  1. D COHORT
  1. Q
  1. REG ;EP;TO SELECT A REGISTER
  1. N Y
  1. K AMQQRDA
  1. S DIC="^ACM(41.1,"
  1. S DIC(0)="AEMQZ"
  1. S DIC("S")="I $D(^ACM(41.1,+Y,""AU"",""B"",DUZ))"
  1. S DIC("A")="Which CMS REGISTER: "
  1. W !
  1. D DIC
  1. Q:$D(AMQQQUIT)
  1. S AMQQRDA=+Y
  1. S AMQQCNAM=$P(Y,U,2)_" REGISTER"
  1. D DECEASED^ACMGTP(AMQQRDA)
  1. Q
  1. ACTIVE ;EP;TO SELECT PATIENT STATUS
  1. K DIR
  1. W !!,"Select the Patient Status for this report"
  1. W !!?10,"1 Active"
  1. W !?10,"2 Inactive"
  1. W !?10,"3 Transient"
  1. W !?10,"4 Unreviewed"
  1. W !?10,"5 Deceased"
  1. W !?10,"6 Non-IHS"
  1. W !?10,"7 Lost to Follow-up"
  1. W !?10,"8 All Register Patients"
  1. S DIR(0)="LO^1:8"
  1. S DIR("A")="Which Status(es)"
  1. S DIR("B")="1"
  1. W !
  1. D ^DIR
  1. K DIR
  1. I 'Y S AMQQQUIT="" Q
  1. I Y[8 S AMQQ("CMS STATUS","Z")="" Q
  1. I Y D
  1. .N X,Z
  1. .F J=1:1 S X=$P(Y,",",J) Q:X="" D
  1. ..S Z=$S(X=1:"A",X=2:"I",X=3:"T",X=4:"U",X=5:"D",X=6:"N",X=7:"L",X=8:"Z",1:"")
  1. ..Q:Z=""
  1. ..S AMQQ("CMS STATUS",Z)=""
  1. Q
  1. COHORT ;CREATE SEARCH TEMPLATE COHORT WITH REGISTER PATIENTS
  1. N X,Y,Z,AMQQDA
  1. D C1
  1. Q:$D(AMQQQUIT)
  1. K ^DIBT(AMQQDA,1)
  1. S X=0
  1. S CTR=0
  1. F S X=$O(^ACM(41,"B",AMQQRDA,X)) Q:'X D
  1. .S Z=$E($G(^ACM(41,X,"DT")))
  1. .Q:Z=""
  1. .S Y=$P($G(^ACM(41,X,0)),U,2)
  1. .Q:'Y
  1. .I $G(AMQQ("DM DIAGNOSIS"))]"" D PATDX I $D(AMQQQUIT) K AMQQQUIT Q
  1. .I $D(AMQQ("CMS STATUS","Z"))!$D(AMQQ("CMS STATUS",Z)) D
  1. ..S ^DIBT(AMQQDA,1,Y)=""
  1. ..W "."
  1. ..S CTR=CTR+1
  1. W !!,"There are ",CTR," register patients for the combination selected.",!
  1. Q
  1. C1 ;CREATE SEARCH TEMPLATE
  1. K DIE,DIC,DINUM,DR,DA,DD,DO,DIK,DLAYGO
  1. S X=$E(AMQQCNAM,1,25)_"-"_$J
  1. S AMQQCHRT=X
  1. S DIC="^DIBT("
  1. S DIC(0)="L"
  1. I $D(^DIBT("B",X)) S Y=$O(^DIBT("B",X,0)) I Y
  1. E D FILE^DICN
  1. K DIE,DIC,DINUM,DR,DA,DD,DO,DIK,DLAYGO
  1. I +Y<1 S AMQQQUIT="" Q
  1. S AMQQDA=+Y
  1. S $P(^DIBT(+Y,0),U,2)=DT
  1. S $P(^DIBT(+Y,0),U,4)=2
  1. S $P(^DIBT(+Y,0),U,5)=DUZ
  1. S ^UTILITY("AMQQ",$J,"Q",1)="40^COHORT^C^1^238^1^IS A MEMBER OF^'=^"_+Y_"^^0.00^^^0^"_+Y_";;^0"
  1. S ^UTILITY("AMQQ",$J,"LIST",.1)="W ?3,@AMQQRV,""Subject of search: PATIENTS"",@AMQQNV"
  1. S ^UTILITY("AMQQ",$J,"LIST",2)="W ?6,""MEMBER OF '"_AMQQCHRT_"' COHORT"""
  1. S ^UTILITY("AMQQ",$J,"WEIGHT",-99,1)=""
  1. S AMQQILIN=2
  1. S AMQQNOET=""
  1. S AMQQUATN=2
  1. S AMQQUNB=1
  1. Q
  1. NEWREG ;EP;TO CREATE REGISTER IN QMAN DICTIONARY OF TERMS
  1. Q:$O(^AMQQ(5,"B","REGISTER",0))
  1. I $D(^AMQQ(5,"B","CMS REGISTER")) D Q
  1. .S DA=$O(^AMQQ(5,"B","CMS REGISTER",0))
  1. .Q:'DA
  1. .S DIE="^AMQQ(5,"
  1. .S DR=".01///^S X=""REGISTER"""
  1. .D ^DIE
  1. .S Y=DA
  1. .K ^AMQQ(5,DA,1)
  1. .K DA,DR,DIE
  1. .D NR1
  1. K DIE,DIC,DINUM,DR,DA,DD,DO,DIK,DLAYGO
  1. S X="REGISTER"
  1. S DIC="^AMQQ(5,"
  1. S DIC(0)="L"
  1. S DIC("DR")="3////52;4////40;10////P"
  1. D FILE^DICN
  1. K DIE,DIC,DINUM,DR,DA,DD,DO,DIK,DLAYGO
  1. NR1 S X="CMS REGISTER"
  1. S DA(1)=+Y
  1. S DIC="^AMQQ(5,"_+Y_",1,"
  1. S DIC(0)="L"
  1. S $P(^AMQQ(5,+Y,1,0),U,2)="9009075.01"
  1. D FILE^DICN
  1. K DIC,DA,DD,DR,DINUM,D,DLAYGO
  1. Q
  1. DIC ;FM DIC INTERFACE
  1. Q:$D(AMQQOUT)
  1. K DTOUT,DUOUT,AMQQQUIT,AMQQOUT
  1. D ^DIC
  1. I +Y<1 S AMQQQUIT=""
  1. S:$D(DUOUT) AMQQQUIT=""
  1. S:$D(DTOUT)!(X="^^") (AMQQQUIT,AMQQOUT)=""
  1. K DIC,DA,DD,DR,DINUM,D,DLAYGO
  1. Q
  1. DX ;EP;TO SELECT DIABETES DIAGNOSIS
  1. I $G(AMQQCNAM)["PRE-DIAB" G PREDX
  1. W !!,"Select the Diabetes Register Diagnosis for this report"
  1. S DIR(0)="SO^1:Type 1;2:Type 2;3:Type 1 & Type 2;4:Gestational DM;5:Impaired Glucose Tolerance;6:All Diagnoses"
  1. S DIR("A")="Which Register Diagnosis"
  1. S DIR("B")="All Diagnoses"
  1. S DIR("?",1)="Enter the appropriate REGISTER DIAGNOSIS term. This is NOT a POV's ICD code."
  1. S DIR("?",2)="Qman will not find patients in which the REGISTER DIAGNOSIS field is null"
  1. S DIR("?",3)=""
  1. S DIR("?",4)="If Register Diagnoses have not been assigned to all patients"
  1. S DIR("?",5)="in the Register or to all patients with a specific categories,"
  1. S DIR("?")="use '6 - All Diagnoses' to avoid misleading results."
  1. D ^DIR
  1. K DIR
  1. I 'Y S AMQQQUIT="" Q
  1. S AMQQ("DM DIAGNOSIS")=$S(Y=1:"TYPE 1",Y=2:"TYPE 2",Y=3:"TYPE 1 & TYPE 2",Y=4:"GESTATIONAL DM",Y=5:"IMPAIRED GLUCOSE TOLERANCE",1:"")
  1. Q
  1. PREDX ;EP TO SELECT PREDIABETES REGISTER DIAGNOSIS
  1. W !!,"Select the Diabetes Register Diagnosis for this report"
  1. S DIR(0)="SO^1:IMP Fasting Glucose (IFG);2:IMP Glucose Tolerance (IGT);3:Metabolic Syndrome;4:Other Abnormal Glucose;5:All Diagnoses"
  1. S DIR("A")="Which Register Diagnosis"
  1. S DIR("B")="All Diagnoses"
  1. S DIR("?",1)="Enter the appropriate REGISTER DIAGNOSIS term. This is NOT a POV's ICD code."
  1. S DIR("?",2)="Qman will not find patients in which the REGISTER DIAGNOSIS field is null"
  1. S DIR("?",3)=""
  1. S DIR("?",4)="If Register Diagnoses have not been assigned to all patients"
  1. S DIR("?",5)="in the Register or to all patients with a specific categories,"
  1. S DIR("?")="use '5 - All Diagnoses' to avoid misleading results."
  1. D ^DIR
  1. K DIR
  1. I 'Y S AMQQQUIT="" Q
  1. S AMQQ("DM DIAGNOSIS")=$S(Y=1:"IMP FASTING GLUCOSE (IFG)",Y=2:"IMP GLUCOSE TOLERANCE (IGT)",Y=3:"METABOLIC SYNDROME",Y=4:"OTHER ABNORMAL GLUCOSE",1:"")
  1. Q
  1. PATDX ;INCLUDE PATIENTS WITH SPECIFIC DIAGNOSIS
  1. S AMQQQUIT=""
  1. Q:'$D(^ACM(44,"D",X))
  1. N Y,Z
  1. S Y=0
  1. F S Y=$O(^ACM(44,"D",X,Y)) Q:'Y D
  1. .S Z=+$G(^ACM(44,Y,0))
  1. .I $P($G(^ACM(44.1,+Z,0)),U)]"",AMQQ("DM DIAGNOSIS")[$P(^(0),U) K AMQQQUIT
  1. Q